| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 769 人关注过本帖
标题:刚从网上看到的问题
只看楼主 加入收藏
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
收藏
 问题点数:0 回复次数:10 
刚从网上看到的问题
public class TT
{ public static void main(String s[])
{ S1 s1 = new S1();
S2 s2 = new S2();
s1 = s2;
System.out.println(s1.s);
System.out.println(s1.getS());
}
}
class S1
{ public String s = "S1";
public String getS()
{ return s; }
}
class S2 extends S1
{ public String s = "S2";
public String getS()
{ return s; }
}
输出结果是 S1 S2,为什么s没有变, getS()却变了呢?
搜索更多相关主题的帖子: 网上 public return 
2006-01-05 17:36
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
Sl.getS(),这个getS()调用的是S2的,不是S1的.(这是我在VJ#上看到的)

=×&D o I p R e E n C g T l X&×=
2006-01-05 20:58
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
收藏
得分:0 
搞不太懂哦~~~~~

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2006-01-05 22:35
Jhyvin
Rank: 2
等 级:新手上路
威 望:4
帖 子:81
专家分:0
注 册:2005-12-29
收藏
得分:0 
我也是不太明白  s1 = s2;把对象s2赋值给了s1 s1的域却没有被覆盖  

一万年太久,只争朝夕! 从此不再乱翻书!!!
2006-01-06 14:42
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
没有被覆盖,只是在调用方法的时候调用S2的

=×&D o I p R e E n C g T l X&×=
2006-01-06 14:52
Jhyvin
Rank: 2
等 级:新手上路
威 望:4
帖 子:81
专家分:0
注 册:2005-12-29
收藏
得分:0 

会不会是这样啊(乱想的)

对象分为属性(域)和行为(方法),同一类型的的对象赋值(比如s1=s2) 只会把行为(方法)传递了给对方 属性(域)并没有没覆盖


一万年太久,只争朝夕! 从此不再乱翻书!!!
2006-01-06 14:53
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
收藏
得分:0 
这样解释好象比较说得通哦~~

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2006-01-06 15:12
Jhyvin
Rank: 2
等 级:新手上路
威 望:4
帖 子:81
专家分:0
注 册:2005-12-29
收藏
得分:0 
仔细想了一下 正确的解析应该是这样的

由于S2是S1的衍生类 所以s1可以接受s2的指定[赋值](s1=s2;),
虽然有这句指定[赋值],但是s1还是类S1的的实例,它只能存取类S1中有定义而且有继承至类S2的成员
而且它并不认得S2新定义的成员 当基底类的一个实例指向衍生类的实例时,可以用这个实例来存取衍
生类的的方法

注意: 生类型态的实例指向基底类的物件基本是不可行的(s2=s1;),虽然可以通过形态的转换来勉强通
过编译器的检查,但执行的时候会发生ClassCastException异常

一万年太久,只争朝夕! 从此不再乱翻书!!!
2006-01-06 22:08
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
收藏
得分:0 
你越解释我越不懂了????

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2006-01-07 00:29
Jhyvin
Rank: 2
等 级:新手上路
威 望:4
帖 子:81
专家分:0
注 册:2005-12-29
收藏
得分:0 
以下是引用cll19820814在2006-1-7 0:29:00的发言:
你越解释我越不懂了????

自习再看一边 8楼的帖 再回到代码理解一下


一万年太久,只争朝夕! 从此不再乱翻书!!!
2006-01-07 16:43
快速回复:刚从网上看到的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034866 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved