先看父类、子类代码:
几点注意事项:
1、执行子类的构造函数前会先执行父类的构造函数;
father constructor
son constructor
father constructor
son constructor
father1 son
3、声明为子类、实例化为父类:
4、声明为父类、实例化为子类:
public class FatherClass {
public FatherClass(){
System.out.println("father constructor");
}
protected void father1(){
System.out.println("father1");
}
}
public class SonClass extends FatherClass {
public SonClass() {
System.out.println("son constructor");
}
protected void father1(){
System.out.println("father1 son");
}
protected void son1(){
System.out.println("son1");
}
}
几点注意事项:
1、执行子类的构造函数前会先执行父类的构造函数;
SonClass sonclass = new SonClass();
输出:
father constructor
son constructor
2、子类可以重写父类的方法,重写的方法请注意:
比如SonClassc重写了FatherClass的father1(),通过子类对象调用father1()时,只执行子类的father1(),不执行父类的father1();SonClass sonclass = new SonClass();
sonclass.father1();
输出:
father constructor
son constructor
father1 son
3、声明为子类、实例化为父类:
SonClass sonclass = new FatherClass(); //错误,要强制转换,像下面那样:
SonClass sonclass = (SonClass) new FatherClass();
但是这样会报错,因为一个父类可以有很多个子类,不能讲父类强制转换为某一个子类:
4、声明为父类、实例化为子类:
FatherClass sonclass = new SonClass();
sonclass.father1();
sonclass.son1(); //报错,没有该函数
仍只执行子类的函数,并且子类中独有的函数还不能调用了。