




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、隐藏、this、super、final、包、接口3.7.2 成员变量的隐藏和方法的重写成员变量的隐藏和方法的重写(1)当子类中定义的成员变量与父类中的成员变量重)当子类中定义的成员变量与父类中的成员变量重名时,则父类中的成员变量不能被继承。名时,则父类中的成员变量不能被继承。(2)当子类中定义的方法和父类中的方法完全相同时,)当子类中定义的方法和父类中的方法完全相同时,父类中的方法将被隐藏(即重写了父类的方法或置换父类中的方法将被隐藏(即重写了父类的方法或置换了父类的方法)了父类的方法) 因此,子类通过成员变量的隐藏和方法的重写可因此,子类通过成员变量的隐藏和方法的重写可以把父类的属性和方法改
2、变为自身的属性和方法。以把父类的属性和方法改变为自身的属性和方法。【例 3.9】 class Mu1 float f(float x,float y) return x*y; /父类父类 乘法乘法 class Add extends Mu1 float f(float x,float y) /重写了父类的方法重写了父类的方法f() return x+y; /子类子类 加法加法 public class Main public static void main(String args) Add sum=new Add();System.out.println(sum.f(2.5f,3f); /调
3、用的是子类重写调用的是子类重写的方法的方法若删除子类重写的方法若删除子类重写的方法f(),则会调用父类方法,则会调用父类方法 class Mu1/父类父类 float f(float x,float y) return x*y; class Add4 extends Mu1/子类子类 /float f(float x,float y) /重写了父类的方法重写了父类的方法f() / return x+y; public class 重写父类方法重写父类方法 public static void main(String args) Add4 sum=new Add4(); System.out.p
4、rintln(sum.f(2.5f,3f); System.out.println(sum.f(2.5f,3f); 3.7.3this 和super关键字 null 代表代表“空空”,在定义一个对象但尚未其分在定义一个对象但尚未其分配内存单元时可以指定这个对象为配内存单元时可以指定这个对象为null; this 代表当前代表当前类类的对象;的对象; super 父父类对象类对象1.this this 表示当前对象本身。通过表示当前对象本身。通过this可以顺利的访问可以顺利的访问到当前类的方法和变量。到当前类的方法和变量。 【例【例3.10】 Public class A int b=8; A
5、(int b) System.out.println(b);/b=5 System.out.println(this.b);/b=8 public static void main(String args) A c=new A(5); 改类名为this2 public class this2/A int b=8; this2(int b) System.out.println(b);/b=5 System.out.println(this.b);/b=8 public static void main(String args) this2 c=new this2(5); 2.superSupe
6、r表示的是当前对象的直接父类对象,是当前对象的直表示的是当前对象的直接父类对象,是当前对象的直接父类的对象引用。接父类的对象引用。 class Mul float f(float x,float y) return x*y; public class Add extends Mul float f(float x,float y) return x+y; void m() float a=f(5f,3f); /a=5f+3f=8.0000000 float b=super.f(5f,3f); /b=5f*3f=15.0000000 System.out.println(“a=”+a); Sys
7、tem.out.println(“b=“+b); public static void main(String args) Add x=new Add(); x.m( ); 主方法main属于子类Add主方法亦可属于单独的类:赋值编译运行主方法亦可属于单独的类:赋值编译运行 /Super表示的是当前对象的直接父类对象,是当前对象的直接父类的对象引用。 class Mul float f(float x,float y) return x*y; class Add extends Mul float f(float x,float y) return x+y; void m() float a=
8、f(5f,3f);/a=5f+3f=8.0000000 float b=super.f(5f,3f); /b=5f*3f=15.0000000 System.out.println(a=+a); System.out.println(b=+b); public class thisSuper public static void main(String args) Add x=new Add(); x.m( ); 主方法main属于单独的类final关键字关键字final关键字 final关键子可以修饰:类、成员变量和方法中的参数。 final类不能被继承:即不能有子类。 final方法不能被
9、重写:如果一个方法被修饰为final方法,则这个方法不能被重写。 Final变量即常量:如果一个成员变量被修饰为final的,就是常量,常量必须赋给初值,而且不能再发生变化。 Final参数为常量:如果方法的参数被修饰为final,该参数的值不能被改变。final方法特点 保证不变、不被覆盖:为了确保某个函数的行为在继承过程中保持不变,并且不能被覆盖,可以使用final方法。 自动优化:方法声明为final,编译器即对此方法的调用进行优化。(编译器会自行判断是否应对final方法进行进行优化。) Private= final、static= final: class中的所有private和st
10、atic方法自然就是final。Final的意义:到此为止的意义:到此为止final在方法之前:防止方法被覆盖。在方法之前:防止方法被覆盖。final在类之前:该类不能被继承。在类之前:该类不能被继承。final在变量之前:定义一个常量。在变量之前:定义一个常量。static的意义:该变量和方法属于类的意义:该变量和方法属于类static 在变量或方法之前:在变量或方法之前:表明它们是属于类的表明它们是属于类的class ABCD char data; static int_share_data; class Demo ABCD a,b,c,dobject bchar dataobject c
11、char dataObject bchar datastatic intshare_dataobject bchar data/Final 3.1.5 包包 计算机操作系统利用文件夹或者目录来存放相关或者同类的文档。与此类似,Java语言用包的概念来组织相关的类。包在物理上一个文件夹,逻辑上是指一种文件分类概念。 一个包就是指一组相关的类。例如:一个名叫Company(公司)的包,将包含一组类,如:Employee(雇员)、Manager(管理者)和Department(部门)等。声明包的格式如下:Package 包名; 其中:Package为关键字,包名为标识符。使用包时注意:使用包时注意:
12、 (1) Package语句要作为程序非注释语句的语句要作为程序非注释语句的第一行第一行语句。语句。 (2) 包内的类名唯一(不重名)。包内的类名唯一(不重名)。 (3)用用import语句语句引用包中的类。引用包中的类。 import语句的基本格式为:语句的基本格式为:import 包名包名.类名;类名; 其中其中import为关键字,包名和类名之间用圆点为关键字,包名和类名之间用圆点(.)隔开。隔开。/程序文件名为Manager.javapackage Company;/声明包名Companyclass Employee /职工类public String name;/名字 public
13、int salary;/薪水 public String getSalary()/发工资 【例3.5】编写程序测试包,先建立一个Company文件夹,然后建立名为Manager.java的类文件。源程序代码如下:解:在eclipse中,新建一个项目package(或在原有项目中),新建一个包:filenewpackage ,输入包名Company,系统即会建立Company文件夹。再新建一个class:Manager.java,注意在package栏中填入:Conpany,编程如下:String str;str = 名字: + name + nSalary: + salary; return
14、str; public class Manager extends Employee/公共类 经理类public String department;/部门public String getSalary() /发薪/父类.方法 子类变量 return super.getSalary() + nDepartment: + department;键入无误键入无误eclipse将自动对此文件进行编将自动对此文件进行编译,生成类文件译,生成类文件Manager.class。在原有项目(原目录)建立源程序文件UsePackage.java。源程序代码如下:/程序文件名UsePackage.javaimp
15、ort Company.Manager;/引入包中的经理类public class UsePackage/公共类 应用包public static void main(String args)Manager m = new Manager(); /实例经理类对象 = 王飞;m.salary = 10000;m.department = 业务部;System.out.println( m.getSalary() );在eclipse中编译运行也可以在命令提示符状态下编译运行,过程如图3.4所示:从图3.4中可以看出首先进入Company目录,编译Manager.java文件,然后
16、返回上层目录,编译UsePackage.java文件,最后执行UsePackage类文件,输出正确的结果。图3.4 测试包的输出结果3.2 接接 口口Java编程语言中禁止多继承属性,但可以通过接口为类扩展方法。接口中可以定义大量的常量和方法其中的方法只是一种声明,没有具体的实现代码使用接口的类自行编写实现这些方法的代码。接口与类的不同在于: (1)不能声明变量,只能声明常量。 (2) 只有方法的声明,没有方法的实现。 接口声明的基本格式如下: public interface 接口名 extends 接口列表使用接口的类引入接口格式:class 类名 implements 接口名 【例3.6
17、】测试接口,定义接口文件Product.java,定义了两个常量(不能声明变量),声明了一个方法(不能编码)。接口文件如下:/程序文件名Product.javapublic interface Productstatic final String MAKER = 计算机制造厂;static final String ADDRESS = 上海;public int getPrice();定义常量声明方法产品Eclipse编辑编译接口:FilesNewinterface,输入接口名称:接口1使用接口的源文件代码如下:/程序文件名UseInterface.javapublic class UseInterface public static void main(String args) Computer p = new Computer(); System.out.print(p.ADDRESS + p.MAKER); System.out.println( 计算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 堤防汛期施工方案
- 孝感岩棉板活动房施工方案
- 账务清理闭环管理方案
- 围栏独立基础施工方案
- 农田提升项目施工方案
- 钢箱梁 施工方案
- 幼儿园感恩节发言稿
- 居间协议和委托协议
- 蜘蛛人外墙刷漆施工方案
- 发言稿的拼音
- 医院培训课件:《手术安全核查制度》
- 零食店食品安全管理制度范本
- 南阳医专缓交学费申请表
- 卫生部病历质量评价标准
- 乘坐地铁安全指南(课件)-小学生主题班会通用版
- 中国石油高效集中的资金管理
- 2018版机电安装工程施工标准化手册
- GB/T 17421.2-2023机床检验通则第2部分:数控轴线的定位精度和重复定位精度的确定
- 收入预算表(物业管理预算表格)
- 肿瘤科治疗流程图2
- 重庆市渝北区大湾镇招录村综合服务专干模拟预测(共500题)笔试参考题库+答案详解
评论
0/150
提交评论