Java04(深入面向对象编程).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Java04(深入面向对象编程).ppt》由会员分享,可在线阅读,更多相关《Java04(深入面向对象编程).ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、深入面向对象编程本章内容o类的继承o高级访问控制o包o=运算符与equals()方法oObject类的方法类的继承o继承是面向对象程序设计语言的另一重要特征,理解继承是理解面向对象程序设计的关键,通过继承可以实现代码的复用,使程序的复杂性线性的增长,而不是随规模的增大呈几何级数增长。o在Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。o在Java中,不允许多继承,即一个类只能有一个父类。车辆车辆机动车机动车非机动车非机动车内燃机车内燃机车电车电车人力车人力车蓄力车蓄力车柴油机车柴油机车汽油机车汽油机车马车马车手推车手推车自行车自
2、行车继承示例类的继承o 继承能够使子类拥有父类的所有的属性和方法,而不需要在子类的类定义时重新定义父类的这些属性和方法,子类即可以保持父类原有的属性和方法,也可以对从父类那里继承而来的属性和方法进行修改,在定义了继承关系后,我们改动父类的一个属性或方法时,子类也会自动改变,但是这些属性和方法必须是非私有,并且没有被子类重新定义的o注:子类拥有父类的所有的属性和方法但不能访问父类中的私有属性与方法一个继承的例子public class Student extends Personprivate int id;public void setId(int id)this.id=id;public v
3、oid study()System.out.println(getName()+is reading!);public void showInfomation()System.out.println(id:+id+name:+getName()+age:+getAge();public static void main(String args)Student stu=new Student();stu.setName(zhangsan);stu.setAge(20);stu.study();stu.showInfomation();构造方法不能被继承o子类不从超类继承构造方法o子类的构造方法一
4、定会调用父类的构造方法,默认调用不带参的构造方法o在子类中用super()来调用父类的构造方法特殊变量supero特殊变量super,提供了对父类的访问。o可以使用super访问父类被子类隐藏的变量或覆盖的方法。o每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造方法,那么在编译的时候就会报错。方法的覆盖(override)o在子类中定义一个与父类同名、返回类型、参数类型均相同一个方法,称为方法的覆盖。o覆盖发生在子类与父类之间。方法覆盖的规则o覆盖方法的返回值类型必须与它所覆盖的方法相同o覆盖方法不能比它所覆盖的方法的访问性差o覆盖方法不能比它所覆盖的方法
5、抛出更多的异常方法的覆盖与重载的区别o方法的覆盖是子类和父类之间的关系,而重载可以是发生在一个类内部多个方法间o方法的覆盖一般是两个方法间的,而重载时可能有多个重载方法o覆盖的方法有相同的方法名和形参表,而重载的方法只能有相同的方法名,不能有相同的形参表o覆盖时区分方法的是根据调用他的对象,而重载是根据形参来决定调用的是哪个方法o用final修饰的方法是不能被子类覆盖的,只能被重载多态的概念o多态是指在一棵继承树中的类可以有多个同名但不同方法体以及不同形参的方法。o有两种情况:o覆盖:在子类中直接定义和父类同样的属性和方法,但重新编写了方法体,即子类与父类方法的形参与返回值都相同,而内部处理不
6、同,这种方法在使用过程中,Java虚拟机会根据调用这个方法的对象来确定哪个方法被调用o重载:同一个类定义中有多个同名的方法,但有不同的形参,而且每个方法有不同的方法体,调用时根据形参的个数和类型来决定调用的是哪个方法对象在继承关系中改变oJava语法规定:o子类实例可以被当作父类的一个对象使用,而父类实例不能被当作子类的一个对象使用o如果一个被父类对象通过赋值指向的地址是子类对象所在的地址,按照前一条准则,这个对象仍然是父类的对象,但它可以通过强制类型转换成子类对象。对象的类型转换o类型转换用来恢复一个对象的全部功能o向上的类型转换(子类转父类)是隐含地实现的o向下的类型转换(父类转子类)必须
7、针对子类,并由编译器检查。也就是说类型转换只能发生在有继承关系的父类与子类之间o可以使用instanceof来测试一个对象的类型类型转换示例Person person=new Person();Student student=new Student();Worker worker=new Worker();person=student;person=worker;worker=(Worker)person;student=(Student)person;/执行出错,抛出ClassCastExceptionworker=(Worker)student;/编译出错,两个对象没有继承关系if(per
8、son instanceof Student)student student=(Student)person;if(person instanceof Worker)worker=(Worker)person;多态性的一个呈现o请指出下面代码的执行结果:class Person public void showInfo()System.out.println(i am a person!);class Student extends Personpublic void showInfo()System.out.println(i am a student!);class Testpublic
9、static void main(String args)Person p=new Student();p.showInfo();包(package)o为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问题,Java引入了包(package)。包(package)opackage语句必须是文件中的第一条语句。也就是说,在package语句之前,除了空白和注释之外不能有任何语句。o如果不加package语句,则指定为缺省包或无名包。o包对应着文件系统的目录层次结构。o在package语句中,用“.”来指明包(目录)的层次。编译并生成包o在当前目录下生成包 javac d.Test.java
10、o在指定目录下生成包 javac d E:JavaLesson Test.javaimport语句o引入包中的类。import java.io.File;o引入整个包。import java.io.*;o在同一包中的类可以互相引用,无需import语句。高级访问控制o类的访问说明符 1、public:能被其它所有的类访问和引用,可使用 import从另一个包中引入所需要的类,但被 引入的类必须是public 修饰。2、默认(friendly):只能被同一个包中的类访问和 引用,一个.Java文件必须有而且最多有一个public修饰的类,且该类的名称要与.java的文件名一致。高级访问控制o方法
11、的访问说明符 1、public:如果类也是public 修饰的话,这些属性和方法可以被所有的类访问和使用 2、private:只能被该类自身访问和调用 3、protected:保护访问控制符,可被同一个包中的 类或不同包中该类的子类以及该类自身访问和引用 4、默认:具有包内访问性,只能被同一个包中的其他类访问和引用方法的访问控制publicprotecteddefaultprivate同类同包子类通用性不同情形下访问说访问说明符明符到此为止-finalofinal在变量之前,则定义一个常量.ofinal在方法之前,该方法不能被覆盖ofinal在类之前,该类不能被继承.常量的定义o使用关键字fi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java04 深入 面向 对象 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内