数码蛋 2017-03-29 07:36 采纳率: 20%
浏览 3882
已采纳

java多态中怎么理解父类可以自动接收子类实例化对象

刚刚看视频里面提到的一句话“父类可以自动接收子类实例化对象”,这句话怎么理解求大神解释

class A {
    public void fun() {
        System.out.println("A public void fun()");
    }
}

class B extends A {
    public void fun() { // 核心方法
        System.out.println("B public void fun()");
    }

    // 是子类扩充的方法
    public void printB() { // 非核心方法
        System.out.println("B public void printB()");
    }
}

class C extends A {
    public void fun() {
        System.out.println("C public void fun()");
    }
}

public class TestDemo {
    public static void main(String args[]) {
        get(new B());
        get(new C());
    }
    public static void get(A a){
        a.fun();
    }
}
  • 写回答

5条回答 默认 最新

  • auerjds 2017-03-29 08:12
    关注

    ”父类可以自动接收子类实例化对象“这句话就是指父类可以接受子类对象。理解层面:猫、狗都属于动物,Animal a = new Dog();
    你贴出来的代码,B中的fun方法是对父类A中的fun方法进行的覆盖重写,printB()方法是B类中特有的方法。你的TestDemo中get(new B())和get(new C());
    打印的结果是:
    B public void fun()
    C public void fun()
    为了更好的理解,可以将TestDemo中的代码修改一下:
    A a1 = new B(); // a1 父类自动接收了子类的实例化对象。
    a1.fun();
    A a2 = new C(); //a2 父类自动接受了子类的实例化对象。
    a2.fun();
    打印的结果与上面一致。
    a1.printB();
    打印结果是:B public void printB()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件