版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、主讲:郭广军主讲:郭广军第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 2 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六第第04章章 Java语言面向对象高级程序设计语言面向对象高级程序设计第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 3 内网内网 5:8000/java 外
2、网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六【目的要求【目的要求】n1掌握掌握面向对象高级程序设计:主要包括消息通面向对象高级程序设计:主要包括消息通信、访问控制、封装、继承、多态性、抽象类、信、访问控制、封装、继承、多态性、抽象类、抽象方法、接口、内部类、匿名类等。抽象方法、接口、内部类、匿名类等。n2掌握掌握Java修饰符:修饰符:this、super、final、abstract、static等。等。n3了解了解Java设计模式:模
3、式的概念,模式的种类,设计模式:模式的概念,模式的种类,Decorator、Faade、FactoryMethod和和Proxy等设计模式,设计模式在接口中的应用。等设计模式,设计模式在接口中的应用。第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 4 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六【重点难点【重点难点】n教学重点教学重点q访问
4、控制、继承、多态性、抽象类、抽象方法、接口。访问控制、继承、多态性、抽象类、抽象方法、接口。n教学难点教学难点 q内部类、匿名类。内部类、匿名类。n教学课时教学课时q理论理论4学时学时+课内上机课内上机2学时学时+课外上机课外上机2学时学时n教学方法教学方法q采用多媒体课件采用多媒体课件+启发式启发式+任务驱动法相结合教学任务驱动法相结合教学n作作 业业qP195:一一T(不抄题不抄题);二二T13,4,5,7,9;三三,四四,五五,六六T(不抄题不抄题);q 七七T 1,2,3,5,6.第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 5 内网内网 http
5、:/5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六第第04章章 Java语言面向对象高级程序设计语言面向对象高级程序设计q4.5.2 抽象方法抽象方法 n4.6 接口接口q4.6.1 接口的概念接口的概念q4.6.2 接口的定义接口的定义q4.6.3 接口的实现接口的实现q4.6.4 接口与抽象类的比较接口与抽象类的比较n4.7 内部类与匿名类内部类与匿名类q4.7.1 内部类内部类q4.7.2 匿
6、名类匿名类n4.8 this、Super和修饰符和修饰符q4.8.1 this引用引用q4.8.2 super关键字关键字q4.8.3 Java的修饰符的修饰符n4.9 Java的设计模式的设计模式q4.9.1 模式的概念模式的概念q4.9.2 创建模式创建模式q4.9.3 结构模式结构模式q4.9.4 行为模式行为模式q4.9.5 设计模式在接口中的应用设计模式在接口中的应用n习题四习题四n实验四实验四 Java面向对象高级程序设计面向对象高级程序设计n4.1 消息通信(消息通信(Communication With Messages)q4.1.1 消息的类型消息的类型q4.1.2 消息的使
7、用消息的使用n4.2 访问控制访问控制q4.2.1 类的访问控制类的访问控制q4.2.2 类成员的访问控制类成员的访问控制n4.3 继承继承q4.3.1 创建子类创建子类q4.3.2 继承的传递性继承的传递性q4.3.3 子类对象的初始化子类对象的初始化q4.3.4 子类继承父类的规则子类继承父类的规则q4.3.5 上转型与下转型对象上转型与下转型对象q4.3.6 继承的使用方法继承的使用方法q4.3.7 继承与组合区别继承与组合区别n4.4 多态性多态性q4.4.1 多态性的概念多态性的概念q4.4.2 方法重载方法重载q4.4.3 方法覆盖方法覆盖q4.4.4 变量覆盖变量覆盖n4.5 抽
8、象类与抽象方法抽象类与抽象方法q4.5.1 抽象类抽象类第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 6 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.1 消息通信(消息通信(Communication With Messages)n4.1.1 消息的类型消息的类型n1公有消息与私有消息公有消息与私有消息q公有消息公有消息指由外界对象直
9、接发送给某对象的消息;指由外界对象直接发送给某对象的消息;q私有消息私有消息指对象自己发送给本身的消息,私有消息指对象自己发送给本身的消息,私有消息对外不开放,外界也不必了解它。对外不开放,外界也不必了解它。q外界对象只能向某对象发送公有消息,而不能发送外界对象只能向某对象发送公有消息,而不能发送私有消息,私有消息则由对象自身发送。私有消息,私有消息则由对象自身发送。第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 7 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目
10、的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.1.1 消息的类型消息的类型n2特定对象的消息特定对象的消息q特定对象的消息指将某对象可接收消息的方法特定对象的消息指将某对象可接收消息的方法集中集中在一起,将其消息组合而形成的一个在一起,将其消息组合而形成的一个粒度更大粒度更大的消的消息,响应此消息的息,响应此消息的方法集方法集对用户是透明的。对用户是透明的。q特定对象的消息可分为三种类型:特定对象的消息可分为三种类型:n可以可以返回返回对象内部状态的消息;对象内部状态的消息;n可以可以改变改变对象内部状态的消息;
11、对象内部状态的消息;n可以做一些可以做一些特定操作特定操作,改变系统状态的消息。,改变系统状态的消息。 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 8 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.1.2 消息的使用消息的使用nP134【例【例4-1】 Java中的消息通信示例。中的消息通信示例。n程序清单程序清单4-1: Messa
12、geDemo.java 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 9 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.2 访问控制访问控制nJava中的中的访问控制访问控制(Access Control)主要包括对包、主要包括对包、类、接口、类成员和构造方法的访问控制等方面。类、接口、类成员和构造方法的访问控制等方面。除了包的访问控制
13、由主机系统决定外,其他的访问除了包的访问控制由主机系统决定外,其他的访问控制通过访问控制符来实现。控制通过访问控制符来实现。n访问控制符访问控制符是一组限定类、接口、类成员是一组限定类、接口、类成员(成员变量成员变量和成员方法和成员方法)是否可以被其他类访问的修饰符。是否可以被其他类访问的修饰符。q类和接口类和接口的访问控制符只有的访问控制符只有public和和默认默认(default)两种。两种。q类成员和构造方法类成员和构造方法的访问控制符有的访问控制符有public、private、protected和和默认默认(default)4种。种。第第0404章章 JavaJava语言面向对象高
14、级程序设计语言面向对象高级程序设计 10 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.2.1 类的访问控制类的访问控制publicpublic(公有类公有类)默认默认(default类类)同一包同一包可见可见可见可见不同包不同包可见可见不可见不可见访问域访问域可见性可见性类控制符类控制符表表4-1 类的访问控制符及可见性类的访问控制符及可见性第第0404章章 JavaJa
15、va语言面向对象高级程序设计语言面向对象高级程序设计 11 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.2.1 类的访问控制类的访问控制(续一续一)n1类的公共访问控制(类的公共访问控制(public)qpublic类类具有具有跨包访问性跨包访问性,以支持类的跨包访问。,以支持类的跨包访问。n一个一个Java程序中最多有一个程序中最多有一个public类(也可以没有类(也
16、可以没有public类),若有则并用类),若有则并用public类名作为整个程序的源类名作为整个程序的源程序文件名。程序文件名。q定义在同一个程序文件中的所有类都属于同一个包(默认定义在同一个程序文件中的所有类都属于同一个包(默认包或包或package指定名称的包)。指定名称的包)。处于同一个包中的类都是处于同一个包中的类都是可见的,不需任何说明便可地互相访问和引用。可见的,不需任何说明便可地互相访问和引用。q一般地,处于不同包中的类相互之间是不可见的,而不能一般地,处于不同包中的类相互之间是不可见的,而不能互相引用。互相引用。只有当某个类的访问控制符为只有当某个类的访问控制符为public时
17、,它才时,它才能被其他包中的类可见和使用。能被其他包中的类可见和使用。第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 12 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.2.1 类的访问控制类的访问控制(续二续二)n若若跨包访问跨包访问public类类,则先在引用它的另一个包中使用,则先在引用它的另一个包中使用import语句引入此语句引
18、入此public类,然后方能访问和引用这个类,类,然后方能访问和引用这个类,以创建这个类的对象,并访问这个类内部可见的数据成员和以创建这个类的对象,并访问这个类内部可见的数据成员和引用它的可见的成员方法。引用它的可见的成员方法。q要特别指出的是,尽管处于不同包中的要特别指出的是,尽管处于不同包中的public类作为整体类作为整体对其他类是可见的,但对其他类是可见的,但并不代表该类的所有数据成员和成并不代表该类的所有数据成员和成员方法也同时对其他类是可见的员方法也同时对其他类是可见的,因为这些数据成员和成,因为这些数据成员和成员方法还进一步受到类成员修饰符访问控制。员方法还进一步受到类成员修饰符
19、访问控制。q只有当只有当public类的类的数据成员和成员方法数据成员和成员方法的访问控制符也被的访问控制符也被声明声明为为public时,这个类的所有用时,这个类的所有用public修饰的数据成员修饰的数据成员和成员方法也同时对其他类是可见的。和成员方法也同时对其他类是可见的。nP136【例【例4-2】 不同包中的不同包中的public类能被跨包访问,而不同类能被跨包访问,而不同包中的包中的default类不能被跨包访问。类不能被跨包访问。q程序清单程序清单4-2: E4_2A.java 、E4_2Demo.java 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级
20、程序设计 13 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六2类的默认访问控制(类的默认访问控制(default) n类的默认访问控制是指类没有访问控制符,它只类的默认访问控制是指类没有访问控制符,它只具有具有包访问性包访问性,即只有在同一个包中的类和对象,即只有在同一个包中的类和对象才能访问和引用默认访问控制的类,而不支持类才能访问和引用默认访问控制的类,而不支持类的跨包访
21、问。的跨包访问。q示例:类的默认访问控制示例如例示例:类的默认访问控制示例如例4-2中的中的E4_2B类所示,由于类所示,由于p1包中的包中的E4_2B类为类为default类类,而,而只具有包访问性,因此它只能被其所在的只具有包访问性,因此它只能被其所在的p1包中的包中的类(如类(如E4_2A类)访问引用,而类)访问引用,而不能被尽管已引入不能被尽管已引入到到p1包中的包中的p2包中类包中类(如如E4_2Demo类和类和E4_2C)访访问引用问引用。 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 14 内网内网 5:8000/
22、java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.2.2 类成员的访问控制类成员的访问控制n类成员不仅包括在类体中类成员不仅包括在类体中声明的成员变量和成员方法声明的成员变量和成员方法,而且包,而且包括从它的直接父类括从它的直接父类继承继承的成员和从任何直接接口继承的成员。的成员和从任何直接接口继承的成员。类域类域同一个类同一个类可见可见可见可见可见可见可见可见包域包域同一包中的子类同一包中的子类可见可见可见可见可见可见不可见不
23、可见同一包中的非子类同一包中的非子类可见可见可见可见可见可见不可见不可见跨包跨包域域不同包中的子类不同包中的子类可见可见可见可见不可见不可见不可见不可见不同包中的非子类不同包中的非子类可见可见不可见不可见不可见不可见不可见不可见表表4-2 类成员的访问控制符及可见性类成员的访问控制符及可见性可见性可见性成员控制符成员控制符访问域访问域第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 15 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上
24、机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六1类成员的公共访问控制(类成员的公共访问控制(public) npublic类型的类成员类型的类成员可被同一类、同一包中子类可被同一类、同一包中子类与非子类和不同包中的子类与非子类的代码访问与非子类和不同包中的子类与非子类的代码访问引用引用。n或者说或者说public类成员可被能够访问它所在的包的类成员可被能够访问它所在的包的任何代码所访问,它不受类域访问性、包域访问任何代码所访问,它不受类域访问性、包域访问性和跨包域访问性的任何限制。性和跨包域访问性的任何限制。第第0404章章 JavaJava语言面
25、向对象高级程序设计语言面向对象高级程序设计 16 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六1类成员的公共访问控制(类成员的公共访问控制(public) (续一续一)nP138【例【例4-3】 对于不同包中和相同包中非子类对于不同包中和相同包中非子类的的public类成员可任意访问。类成员可任意访问。q先在先在pubpac1包包中的中的public类类E4_3A中定义中定义
26、public类型的成员变量和成员方法,类型的成员变量和成员方法,q然后在然后在pubpac2包包中引入中引入pubpac1包中的类后,由包中的类后,由default类类E4_3B中构造方法创建中构造方法创建E4_3A类的实例,类的实例,并访问其中的并访问其中的public成员,实现对成员,实现对public类成员的类成员的跨包访问,跨包访问,q最后在主最后在主类类publicDemo中创建中创建E4_3B类的实例后,类的实例后,实现对同包类的实现对同包类的public类成员的访问。类成员的访问。n程序清单程序清单4-3: E4_3A.java 、publicDemo.java 第第0404章章
27、 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 17 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六2类成员的保护访问控制(类成员的保护访问控制(protected)nprotected类型的类成员类型的类成员可被同一类、同一包中子可被同一类、同一包中子类与非子类和不同包中的子类的代码访问类与非子类和不同包中的子类的代码访问。n或者说或者说protected
28、类成员类成员可被除不同包的非子类以可被除不同包的非子类以外的其他能够访问它所在包的任何代码所访问外的其他能够访问它所在包的任何代码所访问,它不受类域访问性、包域访问性的任何限制。它不受类域访问性、包域访问性的任何限制。qP139【例【例4-4】 允许包域访问允许包域访问protected类成员,类成员,而不能跨包访问不同包中非子类的而不能跨包访问不同包中非子类的protected类成类成员变量与成员方法。员变量与成员方法。q程序清单程序清单4-4: E4_4A.java 、ProtectedDemo.java 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计
29、18 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六2类成员的保护访问控制(类成员的保护访问控制(protected) (续一续一)nP140【例【例4-4】分析:分析:q先在先在propac1包包中的中的public类类E4_4A中定义中定义protected类型的成员变量和成员方法类型的成员变量和成员方法;q然后在然后在propac2包包中引入中引入propac1包中的类后
30、,包中的类后,由由default类类E4_4B中构造方法创建中构造方法创建E4_4A类的实类的实例,并试图跨包访问其中的例,并试图跨包访问其中的protected成员而不成成员而不成q最后在最后在主类主类ProtectedDemo中创建中创建E4_4B类的实类的实例后,实现了对同包类的例后,实现了对同包类的projected成员的访问。成员的访问。第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 19 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点
31、难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六3类成员的默认访问控制(类成员的默认访问控制(default)ndefault类型(没有访问控制符)的类成员类型(没有访问控制符)的类成员只能只能被同一类、同一包中子类与非子类的代码访问被同一类、同一包中子类与非子类的代码访问。它具有类域访问性和包域访问性。它具有类域访问性和包域访问性。qP140【例【例4-5】 default类型的类成员,只具类型的类成员,只具有类域和包域访问性,而不能跨包域访问。有类域和包域访问性,而不能跨包域访问。q程序清单程序清单4-5: nE4_5A.java
32、、DefaultDemo.java 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 20 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六nP141【例【例4-5】分析:分析:q先在先在defpac1包包中的中的public类类E4_5A中定义中定义default类型的成员变量和成员方法类型的成员变量和成员方法;q然后在然后在defpac2包包
33、中引入中引入defpac1包中的类后,由包中的类后,由default类类E4_5B中构造方法创建中构造方法创建E4_5A类的实例,类的实例,并试图跨包访问其中的并试图跨包访问其中的default成员而不成成员而不成;q最后在主最后在主类类DefaultDemo中创建中创建E4_5B类的实例类的实例后,实现了对同包类的后,实现了对同包类的default成员的访问。成员的访问。第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 21 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目
34、的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4类成员的私有访问控制(类成员的私有访问控制(private)nprivate类型的类成员只能被其所在类中的代码类型的类成员只能被其所在类中的代码访问,它只具有类域访问性。访问,它只具有类域访问性。qP141【例【例4-6】 private类型的类成员,只具类型的类成员,只具有类域访问性,而不具备包域和跨包域访问有类域访问性,而不具备包域和跨包域访问性。性。q程序清单程序清单4-6: nE4_6A.java 、PrivateDemo.java q说明:对于同一包中
35、和不同包中说明:对于同一包中和不同包中子类子类的的public、protected、default和和privae成员的访问控制,请成员的访问控制,请见见.4节节相关内容。相关内容。第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 22 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.3 继承继承n继承继承(Inheritan
36、ce)是两个类之间的一种是两个类之间的一种泛化关系泛化关系(一般一般-特殊特殊关系关系),是一种由已有的类创建新类的机制。利用继承,可以),是一种由已有的类创建新类的机制。利用继承,可以先创建一个拥有共同属性的一般类,根据该一般类再创建具有先创建一个拥有共同属性的一般类,根据该一般类再创建具有特殊属性的新类。特殊属性的新类。q由继承而得到的类称为由继承而得到的类称为子类子类(Subclass),被直接或间接继承的,被直接或间接继承的类称为类称为父类父类(Father Class),或叫),或叫超类超类(Superclass)或)或基基类类(Base Class)。子类继承父类的状态和行为,同时
37、也可以)。子类继承父类的状态和行为,同时也可以修改父类的状态或重写父类的行为,并添加新的状态和行为。修改父类的状态或重写父类的行为,并添加新的状态和行为。nJava仅支持仅支持单继承单继承,而不支持多重继承,即每个子类只允许有,而不支持多重继承,即每个子类只允许有一个父类,而不允许有多个父类。但是可以从一个父类中生成一个父类,而不允许有多个父类。但是可以从一个父类中生成若干个子类。若干个子类。q继承不改变成员的访问权限,继承不改变成员的访问权限,父类中的公有成员、保护成员和父类中的公有成员、保护成员和默认成员,在子类中仍然是公有成员、保护成员和默认成员。默认成员,在子类中仍然是公有成员、保护成
38、员和默认成员。Java中的多继承将通过接口方式来实现。中的多继承将通过接口方式来实现。第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 23 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.3.1 创建子类创建子类n在类的声明中加入在类的声明中加入extends子句来创建一个类的子类子句来创建一个类的子类:class extends父类名父类
39、名 /只允许一个直接父类只允许一个直接父类 子类中的新增成员子类中的新增成员 /子类体子类体n说明:说明:q关键字关键字class用来定义类,关键字用来定义类,关键字extends用来指出该类的直用来指出该类的直接父类,若没有接父类,若没有extends子句,则表示该类的默认父类为子句,则表示该类的默认父类为java.lang.Object类。类。q若若“父类父类”又是某个类的子类,则又是某个类的子类,则“子类子类”同时也是该类的同时也是该类的(间接)子类。(间接)子类。q“子类子类”可以继承可以继承“父类父类”中访问权限设定为中访问权限设定为public、protected和和default
40、的成员变量和成员方法,的成员变量和成员方法,但是不能继承访但是不能继承访问权限为问权限为private的成员变量和成员方法。例如:的成员变量和成员方法。例如:第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 24 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.3.1 创建子类创建子类(续一续一)class A / 类类A继承类继承类java
41、.lang.Objectint a1 = 10;private int a2 = 20;public int getA2() return a2; class B extends A / 类类B继承类继承类A,间接继承类间接继承类/java.lang.Object/ 类类B继承父类继承父类A的非私有成员:的非私有成员:a1和和getA2(),而私有成员,而私有成员a2不能被继承不能被继承int b1 = 100;private int b2 = 200;public int getB2() return b2; 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计
42、 25 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.3.2 继承的传递性继承的传递性n类的继承是可以传递的。类的继承是可以传递的。q类继承的传递性是指若类类继承的传递性是指若类B继承类继承类A,类,类C又继承类又继承类B,则类,则类C应包含类应包含类A和类和类B的非私有成员,以及类的非私有成员,以及类C自身的成员。自身的成员。nP143【例【例4-7】 类继承的传递性。类
43、继承的传递性。q程序清单程序清单4-7: InheritanceTransferDemo.java 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 26 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.3.3 子类对象的初始化子类对象的初始化n由于子类中包含有父类的由于子类中包含有父类的非私有非私有成员。在创建子类对象成员。在创建子类对象时
44、,时,不仅要对自身成员变量初始化,而且还要对继承的不仅要对自身成员变量初始化,而且还要对继承的父类中成员变量初始化父类中成员变量初始化。n对象的初始化是通过调用构造方法来实现的。对象的初始化是通过调用构造方法来实现的。q构造方法不能被继承构造方法不能被继承,但可以在子类的构造方法中调,但可以在子类的构造方法中调用父类的构造方法。用父类的构造方法。n为了方便使用,系统规定用为了方便使用,系统规定用this()表示当前类的构表示当前类的构造方法造方法,用,用super()表示直接父类的构造方法表示直接父类的构造方法。n除除Object类没有父类外,其他类的构造方法中应包类没有父类外,其他类的构造方
45、法中应包含自身类的构造方法和直接父类的构造方法。含自身类的构造方法和直接父类的构造方法。返回返回 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 27 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六构造方法的特性构造方法的特性n自动提供默认构造方法自动提供默认构造方法:若一个类中没有定义任何构造方法:若一个类中没有定义任何构造方法时,则系统自
46、动提供一个没有参数的默认构造方法;若类中已时,则系统自动提供一个没有参数的默认构造方法;若类中已定义任何构造方法,则系统将不提供默认构造方法。定义任何构造方法,则系统将不提供默认构造方法。n允许构造方法重载允许构造方法重载:一个类中可根据需要定义多个重载的构:一个类中可根据需要定义多个重载的构造方法,不同构造方法的选择是根据造方法,不同构造方法的选择是根据参数的个数、类型和顺序参数的个数、类型和顺序进行匹配。进行匹配。n支持支持this()和和super():在构造方法定义中,可使用在构造方法定义中,可使用this()来调来调用本类的其他构造方法,使用用本类的其他构造方法,使用super()来
47、调用父类的构造方法。来调用父类的构造方法。若若this和和super都不用时,系统会自动调用都不用时,系统会自动调用super(),即父类的,即父类的默认构造方法。默认构造方法。n调用调用this()或或super()的构造方法的语句必须放在第一条语句,的构造方法的语句必须放在第一条语句,并且并且this()和和super()最多只可调用其中一条。最多只可调用其中一条。nP144【例【例4-8】子类对象的初始化,掌握子类对象的初始化,掌握this()和和super()的使用的使用.第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 28 内网内网 http:/1
48、5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.3.4 子类继承父类的规则子类继承父类的规则n由于子类受到父类成员的访问控制符和包的限制,子类并不能由于子类受到父类成员的访问控制符和包的限制,子类并不能继承父类中所有的成员变量和成员方法。继承父类中所有的成员变量和成员方法。public成员成员protected成员成员默认默认成员成员private成员成员父子类在相父子类在相同包中同包中(同包同包)
49、父子类在不父子类在不同包中同包中(跨包跨包)是否继承是否继承成员控制符成员控制符包域包域表表4-3 子类继承父类的规则子类继承父类的规则注:注:父类的构造方法不能被子类继承,只能通过父类的构造方法不能被子类继承,只能通过super( )来调用。来调用。 父类中成员的访问权限在子类中是不变的。父类中成员的访问权限在子类中是不变的。第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 29 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验
50、内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六1父子类在同一包中的继承规则实例父子类在同一包中的继承规则实例n若若子类和父类在同一个包子类和父类在同一个包中,则子类中,则子类继承继承父类父类中的中的public、protected和默认成员和默认成员(成员变(成员变量和成员方法),将其作为子类的成员,但量和成员方法),将其作为子类的成员,但不不能继承能继承父类的父类的private成员成员。nP145【例【例4-9】 同包中的子类只能继承父类中同包中的子类只能继承父类中的非私有成员(的非私有成员(public、protected和默认成和默认成员)。员)
51、。q程序清单程序清单4-9: InheritanceRuleOfSamePackage.java 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 30 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六2父子类在不同包中的继承规则父子类在不同包中的继承规则(续一续一)n若若子类和父类不在同一个包子类和父类不在同一个包中,则子类中,则子类继承继承了
52、父了父类中的类中的public和和protected成员成员变量和成员方法,变量和成员方法,将其作为子类的成员,但将其作为子类的成员,但不能继承不能继承父类的父类的默认和默认和private成员成员。nP146【例【例4-10】 不同包中的子类只能继承父类不同包中的子类只能继承父类中的中的public和和protected成员,且不同包中的非子成员,且不同包中的非子类不能调用类不能调用protected成员,只有子类才能调用成员,只有子类才能调用protected成员。成员。q程序清单程序清单4-10: InheritanceRuleOfDifferentPackage.java、A.java
53、 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 31 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六4.3.5 上转型与下转型对象上转型与下转型对象n1子类对象和父类对象之间的转换子类对象和父类对象之间的转换qJava允许父类对象和子类对象在一定条件下相互之间允许父类对象和子类对象在一定条件下相互之间转换。其相互转换规则是:转换。其相互转换
54、规则是:n隐式(自动)转换隐式(自动)转换:子类对象直接赋值给父类对象:子类对象直接赋值给父类对象时,子类对象可自动转换为父类对象,称该父类对象时,子类对象可自动转换为父类对象,称该父类对象是子类对象的上转型对象;是子类对象的上转型对象;n强制转换强制转换:父类对象赋值给子类对象时,必须将父:父类对象赋值给子类对象时,必须将父类对象强制转换为子类对象,称该子类对象是父类对类对象强制转换为子类对象,称该子类对象是父类对象的下转型对象;象的下转型对象;n没有继承关系的类类型,即没有继承关系的类类型,即不在继承树的同一个继不在继承树的同一个继承分支上,则不允许进行类型转换承分支上,则不允许进行类型转
55、换。 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 32 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六2上转型对象上转型对象n设类设类A是类是类B的父类,若有:的父类,若有:A a;B b=new B();a=b; /a是是b的上转型对象的上转型对象(子类对象可自动转型成父类对象子类对象可自动转型成父类对象)则称父类对象则称父类对象a是子
56、类对象是子类对象b的上转型对象。若有:的上转型对象。若有:B b;A a=new A();b = (B)a; /b是是a的下转型对象的下转型对象(父类对象须强制转型成子类对象父类对象须强制转型成子类对象)则称子类对象则称子类对象b是父类对象是父类对象a的下转型对象。的下转型对象。 第第0404章章 JavaJava语言面向对象高级程序设计语言面向对象高级程序设计 33 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题
57、2022年年6月月11日星期六日星期六2上转型对象上转型对象(续一续一)n对象的上转型对象的实体由子类负责创建,上转型对象会失对象的上转型对象的实体由子类负责创建,上转型对象会失去原对象的一些属性和功能。上转型对象的特性是:去原对象的一些属性和功能。上转型对象的特性是:q上转型对象上转型对象不能操作子类新增的成员变量和成员方法。不能操作子类新增的成员变量和成员方法。q上转型对象上转型对象可以操作子类继承或重写的成员变量和成员可以操作子类继承或重写的成员变量和成员方法。方法。q若子类重写了父类的某个方法,则上转型对象调用该方若子类重写了父类的某个方法,则上转型对象调用该方法时法时一定是调用被子类
58、重写的方法一定是调用被子类重写的方法。q若子类隐藏了父类的某个变量,则上转型对象访问该变若子类隐藏了父类的某个变量,则上转型对象访问该变量时,量时,访问的是父类中被隐藏的变量访问的是父类中被隐藏的变量。q可以将对象的上转型对象再强制转换成子类对象,则该可以将对象的上转型对象再强制转换成子类对象,则该子类对象又具备了子类所给的所有属性和功能。子类对象又具备了子类所给的所有属性和功能。 nP148【例【例4-11】 上转型对象的使用。上转型对象的使用。q程序清单程序清单4-11: UpTransferObjectType.java 第第0404章章 JavaJava语言面向对象高级程序设计语言面向
59、对象高级程序设计 34 内网内网 5:8000/java 外网外网 http:/:8000/java CSDN 教学导航教学导航目的要求目的要求重点难点重点难点上机实验上机实验内容导航内容导航教学小结教学小结课后习题课后习题2022年年6月月11日星期六日星期六3对象引用变量的动态绑定对象引用变量的动态绑定n引用变量是指类的对象的引用型变量,其绑定规则如下引用变量是指类的对象的引用型变量,其绑定规则如下:q(1)对于一个引用类型的变量,)对于一个引用类型的变量,Java编译器按照它声明的类型编译器按照它声明的类型来处来处理理.q(2)对于一个引用类型的变量,运行时)
60、对于一个引用类型的变量,运行时Java虚拟机按照它实际引用虚拟机按照它实际引用的对象来处理的对象来处理。例如下转型对象的引用虽然编译可以通过,但运行。例如下转型对象的引用虽然编译可以通过,但运行时会抛出时会抛出ClassCastException运行时异常。运行时异常。q(3)在运行时环境中,通过引用类型变量来访问所引用对象的方法)在运行时环境中,通过引用类型变量来访问所引用对象的方法和属性时,和属性时,Java虚拟机采用以下绑定规则:虚拟机采用以下绑定规则:n实例方法与引用变量实际引用的对象的方法绑定实例方法与引用变量实际引用的对象的方法绑定,这种绑定属,这种绑定属于动态绑定,因为是在运行时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年消防安全应急预案和实战演练方案
- 企业物流管理系统建设方案
- 印刷企业火灾应急演练脚本
- 隧道锚杆专项施工方案
- 货物列车事故应急演练脚本
- 2026年度专项行动建筑安全排查整治专项行动方案
- 2025年县乡教师选调考试《教育学》考前冲刺模拟题库含答案详解(巩固)
- 钢结构抗风设计与施工方案
- 2025年县乡教师选调考试《教育学》试题一带答案详解(培优a卷)
- 2025年电线电缆实操试题及答案
- 2025版卵巢癌症状解析及饮食护理原则
- 印刷工艺流程图
- 实施指南(2025)《DL-T 1432.4-2017变电设备在线监测装置检验规范 第4部分:气体绝缘金属封闭开关设备局部放电特高频在线监测装置》
- 企业危险废物应急预案专章
- 小儿隐睾超声课件
- 2025咨询《工程项目组织与管理》冲关宝典
- 单位收入管理办法
- 银行合规宣传课件
- 疤痕培训课件
- 伊利公司库房管理制度
- 第九讲:信息与大数据伦理问题-工程伦理
评论
0/150
提交评论