b站 韩顺平java视频 复习笔记
class SonClass extends FatherClass{
}
继承表达
子类会拥有父类所有的属性和方法,但是受到修饰符的影响,被保护的属性(方法)无法直接调用
无法通过对象名直接调用被限制修饰的属性或方法。
对于默认(补添加修饰符) 虽然子类无法调用。 但是在父子在同包中也可以直接调用。
对于封装保护的属性 可通过父类设置的get/set方法 修改。
父类的构造器如果把无参给覆盖了(当父类只有有参构造器时) 子类一定要去重写这个构造器
如果父类 拥有无参和有参 子类不写构造器 默认调用父类无参构造器
调用父类构造器需要用到super(形参列表)
子类和父类可以有相同的属性和方法 ,调用时先看子类自己是否有,有就用自己的,没有就看他爹的。(把他爹的都继承了)。
假如 调用了他爹的方法 他爹的方法 是调用另一个方法。这时候 这个方法还是会从儿子开始查找,找不到才会用父亲的。
public class TTT {
public static void main(String[] args) {
SonC sonC = new SonC();
System.out.println(sonC.name);
System.out.println(sonC.age);
sonC.f1();
}
}
class FatherC{
public String name = "爹";
public int age = 60;
public void f1(){
System.out.println("dief1工作");
f2();
}
public void f2(){
System.out.println("爹的f2");
}
}
class SonC extends FatherC{
public String name = "儿";
public void f2(){
System.out.println("儿子的F2");
}
}
这里面用了 儿子的f2 虽然f1是爹的而且爹还有f1 还是先从儿子开始向上,
age没有重写用的是继承过来父类的。
当子类通过this调用自己的有参构造器,不会执行super(super与this在一个构造器中只能有一个)。会在通过this调用的构造器中调用super(这里没有写出,调用父类无参)
this和super后面加(参数列表) 在构造器中使用 调用子/父构造器 (二者不共存于一个构造器)
this.属性/方法从子类开始向上找
super.属性/方法跳过子类 从父类向上找。
使用时要注意访问修饰符带来的限制。
当遇到私有无法调用时会报错(子类修改不能降低修饰符限制,只能加大。下级都被限制上面限制肯定更高,没必要再找了。)
方法重写
重写发生于父子之间 要求 名称 返回类型 参数都相同------------(返回对象时 可以是父类返回类型的子类)
上面说道super向上查找