继承中变量的访问特点:
- 先从子类的局部范围找
- 再从子类的成员范围找
- 再从父类的成员范围找
- 若还是找不到则报错(不会再去找父类的父类)
this和super的三种使用方法:
- this:代表本类对象的引用(this指向调用该方法的对象,在当前类中使用的this关键字)
- super:代表父类存储空间的标识(父类对象的引用)
- this:可以访问本类的成员变量 this.变量、可以访问本类的构造方法 this(…)、可以访问本类成员方法 this.成员方法(…)
- super:可以访问父类的成员变量 super.变量、可以访问父类的构造方法 super(…)、可以访问父类成员方法 super.成员方法(…)
继承中构造方法的访问特点:
- 子类中的所有构造方法都会访问父类方法中的无参构造方法,因为1、子类会继承父类中的数据并且可能会使用父类的数据 2、每一个子类的都构造方法的第一句都是:super(),会默认给出,可以省略不写
- 若父类中没有无参构造方法,只有构造方法:1、可以用super(参数)调用父类中的带参构造方法。2、在父类中自己写一个无参构造方法(建议自己手动写一个无参构造方法)
继承中成员方法的访问特点与继承中变量的访问特点一致:
父类转子类:强制转型(向下转型) 子类转父类:自动转型(向上转型)
public class Test{
public static void main(String[] args){
A a=new B();
B b=(B) a;
}
public class A{}
public class B extends A{}
}
之所以能强制转型的前提:是先进行了自动转型,否则会出现强制转型错误 父类类型的对象不能强制转型为子类,父类有的东西子类不一定有,可能会造成紊乱
方法重写:
-
子类继承父类以后,继承了父类的功能,子类若想加入新的功能/内容时,可重写父类中的方法。 -
子类不能重写父类中的private修饰的内容 -
子类方法的访问权限修饰符:public>默认的>private(子类重写父类方法必须一样,哪怕访问权限修饰符不一致,整个方法也不是重写父类的方法) -
Java中的类只支持单继承,不支持多继承(错误写法:public class Son extends Father,Mother{}),但支持多层继承,例如:
public class Father extends Granddad{}
public class Son extends Father{}
也就是Son(儿子)不仅有了了Father(爸爸)的方法,因为Father(爸爸)继承了Granddad(爷爷),所以Son(儿子)也有了Granddad爷爷的方法
- @override:注解,可以帮助我们检查重写方法的方法申明是否正确
|