关于多态的一些思考

多态存在的三个必要条件
  • 继承
  • 重写
  • 父类引用子类对象

多态是指同一个接口具有不同的表现行为。使用多态的调用方法时,首先检查父类中是否有该方法,如果没有编译错误,如果有调用子类的同名方法。

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是一个对象初始化,和构造方法一起初始化,但是上面是先执行的父和子的初始代码块,然后执行父和子的构造方法,因为先初始化类,然后初始化对象。

你可能感兴趣的:(关于多态的一些思考)