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

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 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题