理解Java的多态机制

实现多态的步骤:
1、继承父类
2、覆盖父类方法(如fun2())
3、使用父类声明对象,创建子类实际对象,即父类引用实际指向子类对象(堆中)
4、调用被覆盖的方法(包括子类中某行代码调用被覆盖的方法fun2(),还是直接父类引用调用方法fun2(),如father_monther_fucker.fun2(); ),将实际动态执行子类的方法fun2(),而不是父类的fun2() )

public class Wine {
    public void fun1(){
        System.out.println("Wine 的Fun.....");
        fun2();
    }
    
    public void fun2(){
        System.out.println("Wine 的Fun2...");
    }
}

public class JNC extends Wine{
    /**
     * @desc 子类重载父类方法
     *        父类中不存在该方法,向上转型后,父类是不能引用该方法的
     * @param a
     * @return void
     */
    public void fun1(String a){
        System.out.println("JNC 的 Fun1...");
        fun2();
    }
    
    /**
     * 子类重写父类方法
     * 指向子类的父类引用调用fun2时,必定是调用该方法
     */
    public void fun2(){
        System.out.println("JNC 的Fun2...");
    }
}

public class Test {
    public static void main(String[] args) {
        Wine a = new JNC();
        a.fun1();
    }
}
-------------------------------------------------
Output:
Wine 的Fun.....
JNC 的Fun2...

猜你喜欢

转载自blog.csdn.net/Hendy_Raw/article/details/88557358