(精品)java基础教程(10).ppt
《(精品)java基础教程(10).ppt》由会员分享,可在线阅读,更多相关《(精品)java基础教程(10).ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第十章第十章 继承继承 学习目标:学习目标:如何声明父类和子类用代码实现继承测试继承的有效性super与thisfinal关键字的使用abstract关键字的使用接口的定义继承概述继承概述有重复成员的类有重复成员的类public class Person public String name;public int age;public int getInfo()public class Student public String name;public int age;public int getInfo()public String schoolName;public void study(
2、)public class Person public String name;public int age;public int getInfo()public class Student extends Person public String schoolName;public void study()PersonStudent 继承使得Person类的所有可继承的可继承的变量和方法(区分哪些是可继承,哪些是受限制),都可以在Student类中使用父类子类继承的定义继承的定义 继承:指以原有的类为基础来创建一个新类,从而实现代码重用。被继承的类是:超类或父类超类或父类继承而来的类是:子类
3、子类定义继承的形式为:访问权限class类名 extends父类 注意:1、没有extends,默认父类为Object 2、只有一个父类,即单继承 3、类继承具有传递性class Aclass B extends Aclass C extends B 其中,B类继承A类,C类继承B类,那么C类也间接继承了A类继承的实现1、java中类是一个层次结构,其中Object类类是所有类的根,java中所有的类都直接或者间接继承Object类类2、子类可以继承父类的非私有成员变量和非私有成员变量和非私有方法,但不继承父类的构造方法。非私有方法,但不继承父类的构造方法。(注意区别哪些是可继承和不可继承!)
4、(注意区别哪些是可继承和不可继承!)测试继承测试继承类一次只能继承一个父类(单继承)使用“是一个(is a)”短语验证继承Person和Student的继承是正确的一个Student是一个Person测试继承测试继承错误原因:不满足错误原因:不满足“is a”短语短语正确原因:满足正确原因:满足“is a”短语短语super是什么super用来引用父类的实例对象父类的实例对象主要用途:主要用途:(1)用于访问父类中非非private的成员变量和成员方法,如:super.variable;super.method(参数列表);(2)用于调用父类的构造方法,如:super(参数列表);使用时,必须
5、放在第一句!示例1:在子类成员方法中调用父类成员方法查看结果:查看结果:OverTest.java查看结果查看结果:AddTest.javathis是什么?在每个非静态成员方法内部,都有一个this引用变量,指向调用这个方法的实例。This的真正含义是这个方法所属的实例的引用变量this的应用一让类的成员变量名和对其进行赋值的成员方法的局部变量同名是必要的,这样的代码谁看了都能明白这两个变量是彼此相关的。见书p125 class Person String name;public Person(String name)name=name;this.name=name;this的应用二构造方法不
6、能被显示调用,但是可以在一个构造方法中调用其它重载的构造方法,用this(参数列表)的形式。此时,先执行this表示的构造方法,再执行自己。注意:在调用其它的构造方法的时候,使用this(参数列表)必须是构造方法中的第一条语句,并且在一个构造方法中最多只能调用一个其他的构造方法。查看结果:Person1.java位置!个数!想一想:1)为什么this(参数列表)和super(参数列表)不能同时出现在同一个构造方法中?2)为什么this(参数列表)和super(参数列表)只能作为构造方法中的第一句出现?子类与父类构造方法的关系1、在子类的构造方法中可使用语句super(参数列参数列表表)调用父类
7、的构造方法。2、如果子类的构造方法中没有显式调用父类的构造方法,也没有使用this关键字调用重载的其他构造方法,则在产生子类实例的时候系统会默认调用父类的无参数的构造方法。3、如果子类的构造方法中没有显式调用父类的构造方法,而父类中又没有定义无参数的构造方法(只有当父类没有显式定义任何构造方法时,才会有默认的构造方法),则编译出错。查看结果:Student.java切记!因此:我们在定义类的时候,只要定义了有参数的构造方法,通常就还需要定义一个无参数的构造方法。覆盖父类的方法子类可以根据需要对父类中继承来的方法进行改造这就是方法的覆盖覆盖方法必须和被覆盖方法具有相同的方相同的方法名称,参数列表
8、和返回值类型法名称,参数列表和返回值类型覆盖方法时,不能使用比父类中被覆盖方法更严格的访问权限!如:父类中的方法是public的,子类中覆盖方法就不能为private的查看结果:查看结果:Student.javafinal关键字 在Java中关键字final可以用于修饰类、成员变量和方法final标记的类不能被继承。final标记的方法不能被子类覆盖。final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。final 关键字修饰成员变量常量:如果变量被标记为如果变量被标记为final,其结果是使它成为常量,只,其结果是使它成为常量,只能被赋值一次。能被赋值一次。public cla
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 java 基础教程 10
限制150内