A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ★栤膤嗹☆ 初级黑马   /  2013-8-21 00:11  /  1899 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

子类在实例化一个对象的时候先会去实例化一个父类的对象,那这个父类的对象是隐藏的吗,我要是想调用一下父类中的私有方法怎么用子类的对象去写

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

6 个回复

倒序浏览
本帖最后由 straw 于 2013-8-21 01:41 编辑

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


所以对于你的问题的话,我认为首先父类没有被实例,再次子类中可以通过super关键字去访问父类的共性方法或属性(super不能在static方法中使用,原因是static方法能先与子类对象在内存中存在)

点评

领教了 给力  发表于 2013-8-23 11:47

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
详细解析Java中抽象类和接口的区别http://dev.yesky.com/436/7581936.shtml
回复 使用道具 举报
1、不会产生父类对象,此过程仅仅使用了父类的构造函数,并不是用到构造函数就会产生对象,只有new语句才会产生父类的对象。(straw说的挺好)
2、子类对象无法调用父类的私有方法。关键字private:除了包含该成员的类之外,其他任何类都无法访问这个成员。也就是使用private修饰的成员,其他类是不可以访问的。
回复 使用道具 举报
1、不会产生父类对象,此过程仅仅使用了父类的构造函数,并不是用到构造函数就会产生对象,只有new语句才会产生父类的对象。(straw说的挺好)
2、子类对象无法调用父类的私有方法。关键字private:除了包含该成员的类之外,其他任何类都无法访问这个成员。也就是使用private修饰的成员,其他类是不可以访问的。
回复 使用道具 举报
我觉得创建子类对象时,在子类对象内部是隐式包含了父类对象的,虽然private成员在子类中无法直接使用,但是在父类开放的public成员中,可能会调用到这些private成员,因此必须确保父类的所有成员正确初始化。而这与直接new一个父类其实没有什么本质区别,所有的方法都会被加载,所有的状态都会被初始化。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马