返回信息流既然子类不能继承父类中的私有字段和方法,那当子类继承的方法中需要使用该私有字段时,是怎么执行的?
如:
父类中有私有字段:
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()方法时,是怎么执行的?
这是一条镜像帖。来源:北邮人论坛 / java / #16173同步于 2010/10/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于继承的困惑,求解释。
keroro
2010/10/27镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
本来就是父类的方法,自然可以调用父类的属性。不妨试试在子类中同样加上
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.*]
【 在 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异常,没看出来缺少哪个方法,求解
main函数没有参数。。。
【 在 wang6120 (wang6120) 的大作中提到: 】
: import java.util.*;
: public class testhe {
: public static void main() {
: ...................
【 在 huangcd 的大作中提到: 】
: main函数没有参数。。。
: 【 在 wang6120 (wang6120) 的大作中提到: 】
: : import java.util.*;
: ...................
汗一个,多谢
我原来的意思是:
既然子类没有继承父类中的私有字段,那么使用继承的toString()方法时,方法中涉及的字段哪来的呢?
我自己的理解:
假设对象o是类C1,C2……Cn的实例,其中C1是C2的子类,C2是C3的子类,...
如果对象o调用一个方法p,java虚拟机依次在C1,C2,C3中查找方法p的实现,直到找到为止。
也就是说,如果子类没有覆盖相关方法,就调用父类中的方法。
【 在 keroro 的大作中提到: 】
: 我原来的意思是:
: 既然子类没有继承父类中的私有字段,那么使用继承的toString()方法时,方法中涉及的字段哪来的呢?
: 我自己的理解:
: ...................
为什么没继承,中文的描述有误。其实子类中有父类的所有内容,只是public的是暴露的成员,并不代表private的内容不在子类里。也就是说如果一个父类比较臃肿,比如占100k内存,且都是私有成员,那么子类虽然不能使用父类任何成员,但大小也是大于等于100k的。