BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #16173同步于 2010/10/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

关于继承的困惑,求解释。

keroro
2010/10/27镜像同步9 回复
既然子类不能继承父类中的私有字段和方法,那当子类继承的方法中需要使用该私有字段时,是怎么执行的? 如: 父类中有私有字段: private String color = "White“; private boolean filled; private java.util.Date dateCreated;…… …… public String toString(){ return "created on " + dateCreated + "\ncolor: " + color + "and filled: " + filled; } 当子类继承该toString()方法时,是怎么执行的?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
wang6120机器人#1 · 2010/10/27
重写toString方法 第一行加上super.toString() 调用父类的toString方法, 再加上子类需要输出的信息
huangcd机器人#2 · 2010/10/27
本来就是父类的方法,自然可以调用父类的属性。不妨试试在子类中同样加上 private String color = "yellow"; 之类的内容,看看输出是什么 【 在 keroro (keroro) 的大作中提到: 】 : 标 题: 关于继承的困惑,求解释。 : 发信站: 北邮人论坛 (Wed Oct 27 16:26:46 2010), 站内 : : 既然子类不能继承父类中的私有字段和方法,那当子类继承的方法中需要使用该私有字段时,是怎么执行的? : : 如: : 父类中有私有字段: : private String color = "White“; : private boolean filled; : private java.util.Date dateCreated;…… : …… : public String toString(){ : return "created on " + dateCreated + "\ncolor: " + color + "and filled: " + filled; : } : : 当子类继承该toString()方法时,是怎么执行的? : -- : : : 不管命运的手如何沉重,不管人如何执迷于虚妄, : 不管皱纹怎样犁着前额,不管心里充满几多创伤, : 不管你在忍受怎样的残酷的忧患,但只要你碰到了初春的和煦的风, : 这一切岂不都随风飘去? : : ※ 来源:·北邮人论坛 http://bbs.byr.cn·[FROM: 59.64.154.*]
wang6120机器人#3 · 2010/10/27
【 在 huangcd 的大作中提到: 】 : 本来就是父类的方法,自然可以调用父类的属性。不妨试试在子类中同样加上 : private String color = "yellow"; : 之类的内容,看看输出是什么 : ................... import java.util.*; public class testhe { public static void main() { ball newball = new ball(); System.out.println(newball); } } class ball extends iterm { public ball() { super(); } public String toString() { return super.toString(); } private String color = "yellow"; } class iterm { public iterm() { } public String toString() { return "created on " + dateCreated + "\ncolor: " + color + "and filled: " + filled; } private String color = "White"; private boolean filled = true; private java.util.Date dateCreated = new Date(); } 我写的代码,返回NoSuchMethod异常,没看出来缺少哪个方法,求解
huangcd机器人#4 · 2010/10/27
main函数没有参数。。。 【 在 wang6120 (wang6120) 的大作中提到: 】 : import java.util.*; : public class testhe { : public static void main() { : ...................
wang6120机器人#5 · 2010/10/27
【 在 huangcd 的大作中提到: 】 : main函数没有参数。。。 : 【 在 wang6120 (wang6120) 的大作中提到: 】 : : import java.util.*; : ................... 汗一个,多谢
huangcd机器人#6 · 2010/10/27
^_^ 【 在 wang6120 (wang6120) 的大作中提到: 】 : 汗一个,多谢
keroro机器人#7 · 2010/10/27
我原来的意思是: 既然子类没有继承父类中的私有字段,那么使用继承的toString()方法时,方法中涉及的字段哪来的呢? 我自己的理解: 假设对象o是类C1,C2……Cn的实例,其中C1是C2的子类,C2是C3的子类,... 如果对象o调用一个方法p,java虚拟机依次在C1,C2,C3中查找方法p的实现,直到找到为止。 也就是说,如果子类没有覆盖相关方法,就调用父类中的方法。
greedisgood机器人#8 · 2010/10/30
【 在 keroro 的大作中提到: 】 : 我原来的意思是: : 既然子类没有继承父类中的私有字段,那么使用继承的toString()方法时,方法中涉及的字段哪来的呢? : 我自己的理解: : ................... 为什么没继承,中文的描述有误。其实子类中有父类的所有内容,只是public的是暴露的成员,并不代表private的内容不在子类里。也就是说如果一个父类比较臃肿,比如占100k内存,且都是私有成员,那么子类虽然不能使用父类任何成员,但大小也是大于等于100k的。
spaceman机器人#9 · 2010/11/16
re