• Java 多态 虚方法


    Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。

    看代码:

    package com.company;
    
    public class Main {
    
        public static void main(String[] args) {
            A a1 = new A();
            A a2 = new B();
            B b = new B();
            C c = new C();
            D d = new D();
            System.out.println(a1.show(b));
            System.out.println(a1.show(c));
            System.out.println(a1.show(d));
            System.out.println(a2.show(b));
            System.out.println(a2.show(c));
            System.out.println(a2.show(d));
            System.out.println(b.show(b));
            System.out.println(b.show(c));
            System.out.println(b.show(d));
        }
    
    
    }
    
    class A {
        public String show(D obj) {
            return ("A and D");
        }
    
        public String show(A obj) {
            return ("A and A");
        }
    }
    
    class B extends A {
        public String show(B obj) {
            return ("B and B");
        }
    
        public String show(A obj) {
            return ("B and A");
        }
    }
    
    class C extends B {
    }
    
    class D extends B {
    }

    第一遍看的时候,第四,第五个看不懂

    A a2=new B()

    栈中的引用变量是A,堆中的实例变量是B。

    将子类的实例,赋值给父类的引用。就是向上转型。

    向上转型,在运行时,会遗忘子类对象中与父类对象中不同的方法。也会覆盖与父类中相同的方法--重写。 

    所以a2,可以调用的方法就是,A中有的,但是B中没有的方法,和B中的重写A的方法。

    =============================================================================================

    http://www.cnblogs.com/jack204/archive/2012/10/29/2745150.html

  • 相关阅读:
    用代码初始化AE控件许可
    打开shpfile,mdb,sde工作空间
    UESTC_Tournament CDOJ 124
    UESTC_Little Deer and Blue Cat CDOJ 1025
    UESTC_Judgment Day CDOJ 11
    UESTC_One Step Two Steps CDOJ 1027
    UESTC_In Galgame We Trust CDOJ 10
    UESTC_贪吃蛇 CDOJ 709
    UESTC_冰雪奇缘 CDOJ 843
    java 常用API 时间
  • 原文地址:https://www.cnblogs.com/hongdada/p/5809777.html
Copyright © 2020-2023  润新知