多态存在的三个必要条件
- 继承
- 重写
- 父类引用子类对象
多态是指同一个接口具有不同的表现行为。使用多态的调用方法时,首先检查父类中是否有该方法,如果没有编译错误,如果有调用子类的同名方法。
class Fu {
public int age = 40;
static {
System.out.println("initial block fu");
}
public Fu(){
System.out.println("hello fu");
}
public void show(){
System.out.println("show Fu");
}
}
class Zi extends Fu{
public int age = 20;
static {
System.out.println("initial block Zi");
}
public Zi(){
System.out.println("hello zi");
}
public void show(){
System.out.println("show Zi");
}
public void method(){
System.out.println("method here");
}
}
public class testDemo {
public static void main(String[] args){
Fu demo = new Zi();
System.out.println(demo.age);
demo.show();
}
}
输出为:
initial block fu
initial block Zi
hello fu
hello zi
40
show Zi
上面除了多态需要理解,还要注意的是父类中的属性当用父类去调用时不会被重写。初始代码块的问题,如果没有static是一个对象初始化,和构造方法一起初始化,但是上面是先执行的父和子的初始代码块,然后执行父和子的构造方法,因为先初始化类,然后初始化对象。
网友评论