父类和子类实例化的问题(高手进)

来源:百度知道 编辑:UC知道 时间:2024/05/24 16:58:12
设类M和类N都不是抽象类,且类M是类N
的父类。
• (A) M x1=new M();
• (B) N x1=new N();
• (C) N x1=new M();
• (D) M x1=new N();

请说明选什么,尤其是c和d,请详细说明原理,谢谢
是M X1=new M();
不是M乘以1

哦,是选错误的答案,答案是c

错误的是c
N x1=new M() 是先由M类的默认构造函数生成了一个M类型的对象,将该对象作为实参传给x1的拷贝构造函数,但是该对象不是N类的,所以无法调用拷贝构造。
而 M x1=new N() 先由N类的默认构造函数生成一个N类型的对象,将其转化为一个M类型的引用(绑定到N类型的对象),将该引用作为实参传给x1的拷贝构造函数,生成一个M类型的对象

D
Java中多态的一种表现形式
如果子类重写父类方法则X1调用子类的,否则调用父类的