Super 关键字可以用来调用 父类的方法和构造方法
调用构造方法用super()或 super(paremeters);
如果子类构造器没有显示的被调用,那么编译器就会自动的将 super()(注意是无参数)作为第一条语句
如果父类有两个构造方法一个有参数一个无参数调用的是无参数构造方法
example:
A{ }等价于 A{super();}
注意构造方法链
如果要设计一个可以被继承的类,最好提供一个无参构造方法以避免程序设计错误
example
class A {
public A(int x) {
}
}
(b)
class B extends A {
public B() {
}
}
public class C {
public static void main(String[] args) {
B b = new B();
}
}
编译器会出错 因为B中构造方法super()调用父类及A中的无参构造方法而 A中只有有参构造方法 所以报错
方法重写
私有方法和静态方法不能够被覆盖;
前者重写后的方法与原方法没有关系 后者可以用父类名。静态方法名中调用隐藏的静态方法
方法重写发生在通过继承而相关的不同类中;方法重载可以发生在同一个类中 也可以发生在通过继承而相关的不同类中;
@override 被标注的方法必须重父类的一个方法;
Susout(object)=Susout(object.toString)
多态
父类的引用指向子类的变脸