第4章深入面向对象程序设计.ppt
《第4章深入面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章深入面向对象程序设计.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java第第4 4章章 深入面向对象程序设计深入面向对象程序设计 Java多态多态多态多态 2接口接口接口接口 4继承继承继承继承 3 1抽象类抽象类抽象类抽象类 3 3内部类内部类内部类内部类 3 5本章内容提要本章内容提要 Java 面向对象的程序设计方法力求符合人脑的思面向对象的程序设计方法力求符合人脑的思面向对象的程序设计方法力求符合人脑的思面向对象的程序设计方法力求符合人脑的思维方式,通过符合人类思维的更抽象的客观世界维方式,通过符合人类思维的更抽象的客观世界维方式,通过符合人类思维的更抽象的客观世界维方式,通过符合人类思维的更抽象的客观世界模型,降低、分解问题的难度和复杂性,并以此
2、模型,降低、分解问题的难度和复杂性,并以此模型,降低、分解问题的难度和复杂性,并以此模型,降低、分解问题的难度和复杂性,并以此来解决问题。来解决问题。来解决问题。来解决问题。4 4.继承继承 Java 继承的定义继承的定义 在在在在JavaJavaJavaJava语言中,用语言中,用语言中,用语言中,用extendsextendsextendsextends关键字来表示一关键字来表示一关键字来表示一关键字来表示一个类继承了另一个类,被继承的类称为父类、超个类继承了另一个类,被继承的类称为父类、超个类继承了另一个类,被继承的类称为父类、超个类继承了另一个类,被继承的类称为父类、超类或基类,派生的
3、新类称为子类。类或基类,派生的新类称为子类。类或基类,派生的新类称为子类。类或基类,派生的新类称为子类。例如:例如:例如:例如:public class Sub extends Basepublic class Sub extends Basepublic class Sub extends Basepublic class Sub extends Base 4 4.继承继承 Java 1 1 1 1父类与子类父类与子类父类与子类父类与子类 父类和子类的关系可以用自然语言描述为父类和子类的关系可以用自然语言描述为父类和子类的关系可以用自然语言描述为父类和子类的关系可以用自然语言描述为 :子类子
4、类子类子类is ais ais ais a父类。父类。父类。父类。例例例例4-14-14-14-1子类继承父类子类继承父类子类继承父类子类继承父类 子类与父类的关系类似于家族关系,继承关子类与父类的关系类似于家族关系,继承关子类与父类的关系类似于家族关系,继承关子类与父类的关系类似于家族关系,继承关系可以一直传递下去系可以一直传递下去系可以一直传递下去系可以一直传递下去。4 4.继承继承 Java 2 2 2 2继承的限制继承的限制继承的限制继承的限制 (1 1 1 1)子类和父类位于同一个包中)子类和父类位于同一个包中)子类和父类位于同一个包中)子类和父类位于同一个包中 子类继承父类中子类继
5、承父类中子类继承父类中子类继承父类中publicpublicpublicpublic、protectedprotectedprotectedprotected和默认和默认和默认和默认访问级别的成员变量和成员方法。访问级别的成员变量和成员方法。访问级别的成员变量和成员方法。访问级别的成员变量和成员方法。(2 2 2 2)子类和父类位于不同的包中)子类和父类位于不同的包中)子类和父类位于不同的包中)子类和父类位于不同的包中 子类继承父类中子类继承父类中子类继承父类中子类继承父类中publicpublicpublicpublic和和和和protectedprotectedprotectedprote
6、cted访问级访问级访问级访问级别的成员变量和成员方法。别的成员变量和成员方法。别的成员变量和成员方法。别的成员变量和成员方法。例例例例4-24-24-24-2继承的限制继承的限制继承的限制继承的限制 4 4.继承继承 Java 3 3 3 3类继承的原则类继承的原则类继承的原则类继承的原则 (1 1 1 1)子类只能有一个直接父类)子类只能有一个直接父类)子类只能有一个直接父类)子类只能有一个直接父类 (2 2 2 2)继承具有传递性)继承具有传递性)继承具有传递性)继承具有传递性 (3 3 3 3)继承不能循环)继承不能循环)继承不能循环)继承不能循环 (4 4 4 4)除)除)除)除Ob
7、jectObjectObjectObject类外,所有类都有父类类外,所有类都有父类类外,所有类都有父类类外,所有类都有父类4 4.继承继承 Java 4 4 4 4子类对象的构造子类对象的构造子类对象的构造子类对象的构造 当用子类的构造方法创建一个子类的对象时,子类当用子类的构造方法创建一个子类的对象时,子类当用子类的构造方法创建一个子类的对象时,子类当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法。如果子类的构造方法总是先调用父类的某个构造方法。如果子类的构造方法总是先调用父类的某个构造方法。如果子类的构造方法总是先调用父类的某个构造方法。如果子类的构造方
8、法没有明确地指明使用父类的哪个构造方法,的构造方法没有明确地指明使用父类的哪个构造方法,的构造方法没有明确地指明使用父类的哪个构造方法,的构造方法没有明确地指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。子类就调用父类的不带参数的构造方法。子类就调用父类的不带参数的构造方法。子类就调用父类的不带参数的构造方法。例例例例4-34-34-34-3子类对象调用继承的方法操作未继承的成员变量子类对象调用继承的方法操作未继承的成员变量子类对象调用继承的方法操作未继承的成员变量子类对象调用继承的方法操作未继承的成员变量 4 4.继承继承 Java成员变量隐藏成员变量隐藏 子类继承父类时,不
9、需要重新定义父类中可子类继承父类时,不需要重新定义父类中可子类继承父类时,不需要重新定义父类中可子类继承父类时,不需要重新定义父类中可以被继承的属性。以被继承的属性。以被继承的属性。以被继承的属性。某些情况下,子类需要对从父类继承来的属某些情况下,子类需要对从父类继承来的属某些情况下,子类需要对从父类继承来的属某些情况下,子类需要对从父类继承来的属性变量重新加以定义,使父类和子类的属性同名性变量重新加以定义,使父类和子类的属性同名性变量重新加以定义,使父类和子类的属性同名性变量重新加以定义,使父类和子类的属性同名但不同值,这种机制称为但不同值,这种机制称为但不同值,这种机制称为但不同值,这种机
10、制称为成员变量的隐藏成员变量的隐藏成员变量的隐藏成员变量的隐藏。例例例例4-44-44-44-4成员变量隐藏成员变量隐藏成员变量隐藏成员变量隐藏 4 4.继承继承 Java 方法重写方法重写 如果在子类中定义的一个方法,其名称、返回如果在子类中定义的一个方法,其名称、返回如果在子类中定义的一个方法,其名称、返回如果在子类中定义的一个方法,其名称、返回类型及参数定义正好与父类中某个方法的名称、返类型及参数定义正好与父类中某个方法的名称、返类型及参数定义正好与父类中某个方法的名称、返类型及参数定义正好与父类中某个方法的名称、返回类型及参数定义相同,则可以说,子类的回类型及参数定义相同,则可以说,子
11、类的回类型及参数定义相同,则可以说,子类的回类型及参数定义相同,则可以说,子类的方法重方法重方法重方法重写写写写了父类的方法。了父类的方法。了父类的方法。了父类的方法。方法的方法的方法的方法的参数定义相同指方法中所有对应顺序的参数定义相同指方法中所有对应顺序的参数定义相同指方法中所有对应顺序的参数定义相同指方法中所有对应顺序的参数的类型相同,并且参数的个数相同。参数的类型相同,并且参数的个数相同。参数的类型相同,并且参数的个数相同。参数的类型相同,并且参数的个数相同。4 4.继承继承 Java【例例例例4-54-54-54-5】方法重写方法重写方法重写方法重写4 4.继承继承直接访问父类的学制
12、:直接访问父类的学制:直接访问父类的学制:直接访问父类的学制:4 4 4 4直接访问子类的学制:直接访问子类的学制:直接访问子类的学制:直接访问子类的学制:3 3 3 3调用子类的方法访问子类的学制:调用子类的方法访问子类的学制:调用子类的方法访问子类的学制:调用子类的方法访问子类的学制:3 3 3 3 Java 方法重写的其他要求:方法重写的其他要求:(1 1 1 1)子类方法不能缩小父类方法的访问权限。)子类方法不能缩小父类方法的访问权限。)子类方法不能缩小父类方法的访问权限。)子类方法不能缩小父类方法的访问权限。(2 2 2 2)子类方法不能抛出比父类方法更多的异常。)子类方法不能抛出比
13、父类方法更多的异常。)子类方法不能抛出比父类方法更多的异常。)子类方法不能抛出比父类方法更多的异常。(3 3 3 3)方法重写只存在于子类和父类(包括直接父)方法重写只存在于子类和父类(包括直接父)方法重写只存在于子类和父类(包括直接父)方法重写只存在于子类和父类(包括直接父 类和间接父类)之间。类和间接父类)之间。类和间接父类)之间。类和间接父类)之间。4 4.继承继承 Java (4 4 4 4)父类的静态方法不能被子类覆盖为非静态方)父类的静态方法不能被子类覆盖为非静态方)父类的静态方法不能被子类覆盖为非静态方)父类的静态方法不能被子类覆盖为非静态方 法。法。法。法。(5 5 5 5)子
14、类可以定义与父类的静态方法同名的静态方)子类可以定义与父类的静态方法同名的静态方)子类可以定义与父类的静态方法同名的静态方)子类可以定义与父类的静态方法同名的静态方 法,以便在子类中隐藏父类的静态方法法,以便在子类中隐藏父类的静态方法法,以便在子类中隐藏父类的静态方法法,以便在子类中隐藏父类的静态方法 (6 6 6 6)父类的非静态方法不能被子类覆盖为静态方)父类的非静态方法不能被子类覆盖为静态方)父类的非静态方法不能被子类覆盖为静态方)父类的非静态方法不能被子类覆盖为静态方 法。法。法。法。(7 7 7 7)父类的私有方法不能被子类覆盖。)父类的私有方法不能被子类覆盖。)父类的私有方法不能被
15、子类覆盖。)父类的私有方法不能被子类覆盖。4 4.继承继承 Java supersuper关键字关键字 1 1 1 1调用构造方法调用构造方法调用构造方法调用构造方法 在子类的构造方法中,可以使用在子类的构造方法中,可以使用在子类的构造方法中,可以使用在子类的构造方法中,可以使用supersupersupersuper代表代表代表代表指定的某个父类的构造方法。指定的某个父类的构造方法。指定的某个父类的构造方法。指定的某个父类的构造方法。当调用子类的构造方法创建对象时,如果在当调用子类的构造方法创建对象时,如果在当调用子类的构造方法创建对象时,如果在当调用子类的构造方法创建对象时,如果在子类的构
16、造方法中没有显式的调用父类的构造方子类的构造方法中没有显式的调用父类的构造方子类的构造方法中没有显式的调用父类的构造方子类的构造方法中没有显式的调用父类的构造方法,则法,则法,则法,则super()super()super()super()方法将被自动调用方法将被自动调用方法将被自动调用方法将被自动调用。4 4.继承继承 Java【例例例例4-64-64-64-6】supersupersupersuper关键字关键字关键字关键字4 4.继承继承create a studentcreate a studentcreate a studentcreate a student:John,John,J
17、ohn,John,he is a he is a he is a he is a graduateStudentgraduateStudentgraduateStudentgraduateStudentcreate a studentcreate a studentcreate a studentcreate a student:Tom,Tom,Tom,Tom,he is a he is a he is a he is a graduateStudentgraduateStudentgraduateStudentgraduateStudenthis tutorhis tutorhis tuto
18、rhis tutor:Bill,Bill,Bill,Bill,his specialty directionhis specialty directionhis specialty directionhis specialty direction:computercomputercomputercomputer Java 2 2 2 2引用隐藏变量引用隐藏变量引用隐藏变量引用隐藏变量 在在在在JavaJavaJavaJava语言中,变量的隐藏有两种:语言中,变量的隐藏有两种:语言中,变量的隐藏有两种:语言中,变量的隐藏有两种:其一,子类成员变量和父类成员变量同名,其一,子类成员变量和父类成员变
19、量同名,其一,子类成员变量和父类成员变量同名,其一,子类成员变量和父类成员变量同名,父类变量隐藏;父类变量隐藏;父类变量隐藏;父类变量隐藏;其二,类的局部变量和类的成员变量同名,其二,类的局部变量和类的成员变量同名,其二,类的局部变量和类的成员变量同名,其二,类的局部变量和类的成员变量同名,隐藏类的成员变量。隐藏类的成员变量。隐藏类的成员变量。隐藏类的成员变量。4 4.继承继承 Java【例例例例4-74-74-74-7】访问被隐藏的变量访问被隐藏的变量访问被隐藏的变量访问被隐藏的变量4 4.继承继承stu_nostu_nostu_nostu_no=40011=40011=40011=4001
20、1stu_nostu_nostu_nostu_no is 30011 is 30011 is 30011 is 30011stu_nostu_nostu_nostu_no of Student is 10011 of Student is 10011 of Student is 10011 of Student is 10011stu_nostu_nostu_nostu_no of of of of GraduateStudentGraduateStudentGraduateStudentGraduateStudent is 20011 is 20011 is 20011 is 20011 J
21、ava 3 3 3 3调用被重写方法调用被重写方法调用被重写方法调用被重写方法 当子类的某个方法重写了父类的一个方法,当子类的某个方法重写了父类的一个方法,当子类的某个方法重写了父类的一个方法,当子类的某个方法重写了父类的一个方法,可以通过可以通过可以通过可以通过supersupersupersuper关键字访问父类的方法,而通过关键字访问父类的方法,而通过关键字访问父类的方法,而通过关键字访问父类的方法,而通过thisthisthisthis关键字则可以访问当前类中的方法。关键字则可以访问当前类中的方法。关键字则可以访问当前类中的方法。关键字则可以访问当前类中的方法。supersupersu
22、persuper关键字不能多重使用。例如,关键字不能多重使用。例如,关键字不能多重使用。例如,关键字不能多重使用。例如,super.supersuper.supersuper.supersuper.super()就是非法操作()就是非法操作()就是非法操作()就是非法操作。4 4.继承继承 Java 【例例例例4-84-84-84-8】重写方法的访问重写方法的访问重写方法的访问重写方法的访问4 4.继承继承stu_nostu_nostu_nostu_no of Student is 10011 of Student is 10011 of Student is 10011 of Student
23、 is 10011stu_nostu_nostu_nostu_no of of of of GraduateStudentGraduateStudentGraduateStudentGraduateStudent is 20011 is 20011 is 20011 is 20011stu_nostu_nostu_nostu_no of of of of GraduateStudentGraduateStudentGraduateStudentGraduateStudent is 30011 is 30011 is 30011 is 30011 Javafinalfinalfinalfinal
24、关键字关键字关键字关键字1 1 1 1finalfinalfinalfinal类类类类 可以使用可以使用可以使用可以使用finalfinalfinalfinal将类声明为将类声明为将类声明为将类声明为finalfinalfinalfinal类。类。类。类。finalfinalfinalfinal类不能被继承,即不能有子类类不能被继承,即不能有子类类不能被继承,即不能有子类类不能被继承,即不能有子类 。2 2 2 2finalfinalfinalfinal方法方法方法方法 如果某个方法使用如果某个方法使用如果某个方法使用如果某个方法使用finalfinalfinalfinal修饰,那么这个方修饰
25、,那么这个方修饰,那么这个方修饰,那么这个方法不允许子类重写。法不允许子类重写。法不允许子类重写。法不允许子类重写。3 3 3 3finalfinalfinalfinal变量变量变量变量 如果成员变量或局部变量被修饰为如果成员变量或局部变量被修饰为如果成员变量或局部变量被修饰为如果成员变量或局部变量被修饰为finalfinalfinalfinal,那么这个变量就是那么这个变量就是那么这个变量就是那么这个变量就是“常量常量常量常量”。4 4.继承继承 Java JavaJavaJavaJava语言的多态可以分编译时多态和运行时语言的多态可以分编译时多态和运行时语言的多态可以分编译时多态和运行时语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深入 面向 对象 程序设计
限制150内