黑马程序员技术交流社区

标题: 父类对象怎么使用 [打印本页]

作者: ★栤膤嗹☆    时间: 2013-8-21 00:11
标题: 父类对象怎么使用
子类在实例化一个对象的时候先会去实例化一个父类的对象,那这个父类的对象是隐藏的吗,我要是想调用一下父类中的私有方法怎么用子类的对象去写

作者: straw    时间: 2013-8-21 01:40
本帖最后由 straw 于 2013-8-21 01:41 编辑

这个问题问得太好了!
      关于创建子类对象时是否父类也被实例?我认为是不会的.
      首先子类在创建对象时会调用父类的无参构造函数,很多人认为在这时父类就被实例了一个对象在内存中! 可是如果是这样的话那java也太消耗内存了吧?JVM不会傻到这个地步啊?再说了如果父类是一个抽象类的话,抽象类又不能创建实例啊.照如此分析的话父类是没有被实例的.但是很多人会认为在子类中可以通过super关键字来调用父类的方法属性,那么super不就是指向父类的实例吗?其实super不是指向父类的实例,而是指向子类继承父类下来的部分方法属性的临时对象,所以super只能访问父类的非private的属性和方法.


所以对于你的问题的话,我认为首先父类没有被实例,再次子类中可以通过super关键字去访问父类的共性方法或属性(super不能在static方法中使用,原因是static方法能先与子类对象在内存中存在)
作者: meng    时间: 2013-8-21 07:22
详细解析Java中抽象类和接口的区别http://dev.yesky.com/436/7581936.shtml
作者: 张云飞    时间: 2013-8-21 15:06
1、不会产生父类对象,此过程仅仅使用了父类的构造函数,并不是用到构造函数就会产生对象,只有new语句才会产生父类的对象。(straw说的挺好)
2、子类对象无法调用父类的私有方法。关键字private:除了包含该成员的类之外,其他任何类都无法访问这个成员。也就是使用private修饰的成员,其他类是不可以访问的。
作者: ★忙碌★    时间: 2013-8-21 17:10
1、不会产生父类对象,此过程仅仅使用了父类的构造函数,并不是用到构造函数就会产生对象,只有new语句才会产生父类的对象。(straw说的挺好)
2、子类对象无法调用父类的私有方法。关键字private:除了包含该成员的类之外,其他任何类都无法访问这个成员。也就是使用private修饰的成员,其他类是不可以访问的。
作者: longlangcx    时间: 2013-8-23 09:27
我觉得创建子类对象时,在子类对象内部是隐式包含了父类对象的,虽然private成员在子类中无法直接使用,但是在父类开放的public成员中,可能会调用到这些private成员,因此必须确保父类的所有成员正确初始化。而这与直接new一个父类其实没有什么本质区别,所有的方法都会被加载,所有的状态都会被初始化。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2