创建一个子类对象的同时一定会创建 一个父类对象吗? class Father{ //……}public class Son extends Father{ public static void main(String[] args) { Son son=new Son();//这条语句会同时创建一个父类对象吗?如果创建了,怎么去引用它 }} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有创建父类对象,如果真的这么样的话,创建一个子类的对象,那就创建一个父类的对象,也太耗费资源了。即使你Father f = new Son();这个对象也是子类对象。 不会。创建一个对象就是一个对象,只是会调用父类的构造函数而已。参考这里:http://blog.csdn.net/yidinghe/archive/2009/01/21/3839483.aspx 我的看法是,创建子类对象时父类对象也被创建,一个子类对象实例,包含一个完整的父类对象实例,但是这个父类对象的实例存在于子类对象实例的内存中,即Father f = son;时,f指向的就是这个父类对象实例,f能访问的内存也只能是这个父类对象实例的内存范围,不能超出这个范围而访问子类对象实例的扩展内存范围。 是的 创建子类的对象,一定会调用父类的构造函数.认同LSQuote:我的看法是,创建子类对象时父类对象也被创建,一个子类对象实例,包含一个完整的父类对象实例,但是这个父类对象的实例存在于子类对象实例的内存中,即Father f = son;时,f指向的就是这个父类对象实例,f能访问的内存也只能是这个父类对象实例的内存范围,不能超出这个范围而访问子类对象实例的扩展内存范围。 [/qupte]观点 没研究过JVM--但是有可能是父类和子类同时指向一个地址。父类在列表最前端,所以通过(父类)子类 这种方式可以转化成父类对象。对象只是一种思想,要是以内存占用的角度,那就是创建了父类对象。 不会创建父类的对象,不过子类继承了父类的方法和属性 (不包括私有)。调用父类方法可以用this 或者super 调用! 创建子类对象时一定会创建父类对象的,其实java与现实世界都是一一对应的,没有父哪来子的,只是创建的父类对象隐含的包含在子类对象中,这就对应着长江后浪推前浪即子胜过父的。兄弟也可以查查相关的书,以证明一下 new 出来什么就是什么对象 看看这个:public class TryExtends { public static void main(String[]args){ Son s=new Son(); System.out.print("子类外代码调用结果:"+s.str); s.getShow(); }}class Father{ public String str="该成员变量为public类型,能够被子类成功继承"; }class Son extends Father{ public void getShow(){ System.out.print("\n子类内代码调用结果:"+this.str); } } 我也觉得 extends 只是子类包含了父类的一些特性。super.XXX 只是表明这个属性不是在通过子类定义的。但是父类的信息已经包含在子类中。如果一个子类继承的是一个抽象类,又怎么去创建父类的对象呢?所以,我觉得父类对象没有被创建。 用关键字super调父类的方法成员变量 是不会调用的,不过在创建子类的对象时会先默认调用父类的无参构造函数(如果不显示写无参的构造函数,会自动生成的),如果想显示调用父类的带参构造函数或方法,可以使用super这个关键字。 没有创建父类对象, 只不过是创建了一个子类对象,但是这个对象同时也是指向父类的一个指针(C++中的说法,当然java中没有指针),这个对象具有父类的方法和属性 hinking in Java 第六章中说得很明白:创建衍生类的一个对象时,它在其中包含了基础类的一个“子对象”。这个子对象就象我们根据基础类本身创建了它的一个对象。从外部看,基础类的子对象已封装到衍生类的对象里了。 facebook一道面试题,求效率算法 JAVA底层代码求解,谢谢 如何使JComboBox中的某一项不能被选中,谢谢 客户端调用RMI接口,包出异常,不明原因,请各位高手看看?急!!!!!!!!! 有几个疑问,都是些基础的,但是比较有意思的,大牛们挑着回答下吧 怎么用JAVA写一个读者写者问题的求解啊 求救~~~~~~~~~~~~~~~~~~~~ 菜鸟:提问 请问各位文件和数字相互转化的问题?急 JAVA求解,我这个Label运行后不显示 report tool java怎么用7z的sdk解压一个7z文件,并保存到一个位置? 头晕中,求改swing界面的socket程序代码。
public class TryExtends {
public static void main(String[]args){
Son s=new Son();
System.out.print("子类外代码调用结果:"+s.str);
s.getShow();
}}
class Father{
public String str="该成员变量为public类型,能够被子类成功继承";
}
class Son extends Father{
public void getShow(){
System.out.print("\n子类内代码调用结果:"+this.str);
}
}
只不过是创建了一个子类对象,但是这个对象同时也是指向父类的一个指针(C++中的说法,当然java中没有指针),这个对象具有父类的方法和属性
创建衍生类的一个对象时,它在其中包含了基础类的一个“子对象”。这个子对象就象我们根据基础类本身创建了它的一个对象。从外部看,基础类的子对象已封装到衍生类的对象里了。