一.继承基本属性
class 子类 extends 父类{ }
1.子类就会自动拥有父类定义的属性方法
2.父类又叫超类,基类
3.子类又叫派生类
二.细节
1.子类继承了所有的属性和方法,但是私有属性不能放在子类中直接访问,要通过公有的方法去访问。
2.子类必须调用父类的构造器,完成父类的初始化
3.当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类哪个构造器完成对父类的初始化工作,否则,编译不会通过。
4.如果希望指定去调用父类的某个构造器,则显式的调用一下
5.super在使用时,需要放在构造器第一行
6.super()和this()都只能放在构造器第一行,因此这两个方法不能共存在一个构造器中。
7.Java所有类都是object的子类
8.父类构造器的调用不限于直接父类,将一直追溯到object类(顶级父类)
9.子类最多只能继承一个父类(直接继承),即Java中是单继承机制
10.不能滥用继承,子类和父类必须满足is-a的关系
三.super关键字
1.基本介绍
super代表父类的引用,用于访问父类的属性、方法、构造器
2.基本语法
1.访问父类的属性,但不能访问父类的private属性
super.属性名;
2.访问父类的方法,不能访问父类的private方法
super.方法名(参数列表);
3.访问父类的构造器
super(参数列表);只能放在构造器的第一句,只能出现一句
3.super好处
1.父类属性由父类初始化,子类的属性由子类初始化
2.当子类中有和父类中的成员(属性或方法)重名时,为了访问父类的成员,必须通过super,如果没有重名,使用super,this,直接访问是一样的效果。
3.super访问不限于直接父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的成员;如果多个基类(上级类)中都有同名的成员,使用super遵循就近原则
4.super与this的比较
区别点 | this | super | |
1 | 访问属性 | 访问本类中的属性,如果本类中没有此属性,则从父类中继续查找 | 从父类开始查找的属性 |
2 | 调用方法 | 访问本类中的方法,如果本类中没有此方法,则从父类中继续查找 | 直接访问父类中的方法 |
3 | 调用构造器 | 调用本类构造器,必须放在构造器的首行 | 调用父类构造器,必须放在子类构造器的首行 |
4 | 特殊 | 表示当前对象 | 子类中访问父类对象 |
四.方法重写(override)
1.注意事项和使用细节
1.子类的方法的形参列表,方法名称,要和父类方法中的参数,方法名称完全一样
2.子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类
比如,父类返回类型是object,子类方法返回类型是String
3.子类方法不能缩小父类方法的访问权限
2.方法重载和方法重写的比较
名称 | 发生范围 | 方法名 | 形参列表 | 返回类型 | 修饰符 |
重载(overload) | 本类 | 必须一样 | 类型,个数或者顺序至少有一个不同 | 无要求 | 无要求 |
重写(override) | 父子类 | 必须一样 | 相同 | 子类重写的方法,返回类型需要和父类返回类型相同或者是其子类 | 子类方法不能缩小父类方法的访问范围 |