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

发个关于接口和对象的疑问,大家讨论讨论

kaka2w
2011/10/31镜像同步16 回复
public class TestClass1{ protected String str; public TestClass1(){ str="TestClass1"; } } public interface TestInterface1{ String str="TestInterface1"; } public class TestClass2 extends TestClass1 implements TestInterface1(){ public void method1(){ System.out.println(this.str); } } public class TestClass3 { public static void main(String[] str){ TestClass1 obj=new TestClass1(); obj.method1(); } } 运行结果是输出 TestClass1 呢还是 TestInterface1 ? 这算不算一个java的语言本身的bug? ----------------------------------------------------------------------------- kaka2w (长期征人游泳跑步) 共上站 5445 次,发表过 8888 篇文章 积分[3303] 可消费积分[3303] 性别:[帅哥哦] 星座:[天蝎座] kaka2w (长期征人游泳跑步) 共上站 6151 次,发表过 9999 篇文章 积分[4200] 可消费积分[4200] 性别:[帅哥哦] 星座:[天蝎座] 微博求关注:http://weibo.com/1246502925
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
ox机器人#1 · 2011/10/31
编译器应该不会让你编译通过的,str属性会冲突 【 在 kaka2w (长期征人游泳跑步) 的大作中提到: 】 : public class TestClass1{ : protected String str; : public TestClass1(){ : ...................
kaka2w机器人#2 · 2011/10/31
嗯,我想问问怎么修改 除了用getter setter 以及改名字这种弱智办法以外有没有什么高级点的解决方案? 【 在 ox (小贝) 的大作中提到: 】 : 标 题: Re: 发个关于接口和对象的疑问,大家讨论讨论 : 发信站: 北邮人论坛 (Mon Oct 31 11:22:48 2011), 站内 : : 编译器应该不会让你编译通过的,str属性会冲突 : 【 在 kaka2w (长期征人游泳跑步) 的大作中提到: 】 : : public class TestClass1{ : : protected String str; : : public TestClass1(){ : : ................... : : -- : : ※ 来源:·北邮人论坛 bbs.byr.cn·[FROM: 59.64.158.*]
GacktCamui机器人#3 · 2011/10/31
怎么能算是bug?就像关键字不能乱用一样。 变量命名冲突说明详设做得糟糕。 既然有继承和实现,为什么要在做详设画类图时定一样的名字?目的何在? 需求和设计比编码更重要,缺乏设计或者糟糕的设计意味着后期要花十倍百倍于开发的时间去维护。
kearnel机器人#4 · 2011/10/31
窃以为:interface里的“变量”默认具有final static属性(也就是所谓的全局常量),其定义时一般变量名采用大写例如 GLOBAL_EXAMPLE 这样,所以不会和类中成员变量名字出现冲突。一句话,还是设计的问题。
kaka2w机器人#5 · 2011/10/31
默认。。问题是没有,当然不管是否声明为fanal static,interface 里的 param确实就具有final static的属性 我还在学习中,在实际应用过程中看到这里觉得挺费解,interface的param居然必须在interface里实现而不是仅仅声明一下就可以了 【 在 kearnel (专业路过帝) 的大作中提到: 】 : 标 题: Re: 发个关于接口和对象的疑问,大家讨论讨论 : 发信站: 北邮人论坛 (Mon Oct 31 12:58:35 2011), 站内 : : 窃以为:interface里的“变量”默认具有final static属性(也就是所谓的全局常量),其定义时一般变量名采用大写例如 GLOBAL_EXAMPLE 这样,所以不会和类中成员变量名字出现冲突。一句话,还是设计的问题。 : -- : : ※ 来源:·北邮人论坛 http://bbs.byr.cn·[FROM: 118.229.173.*]
kaka2w机器人#6 · 2011/10/31
我是这么理解的,java既然用this 和 super 很好的解决了子类和父类命名冲突时的释疑问题,明确了指向,接口和父类之间的命名冲突怎么就没有类似的解决方案? 变量命名乱不乱在于程序的风格和规格设计,这和语言本身没啥关系 【 在 GacktCamui (神威乐斗) 的大作中提到: 】 : 标 题: Re: 发个关于接口和对象的疑问,大家讨论讨论 : 发信站: 北邮人论坛 (Mon Oct 31 12:27:23 2011), 站内 : : 怎么能算是bug?就像关键字不能乱用一样。 : 变量命名冲突说明详设做得糟糕。 : 既然有继承和实现,为什么要在做详设画类图时定一样的名字?目的何在? : 需求和设计比编码更重要,缺乏设计或者糟糕的设计意味着后期要花十倍百倍于开发的时间去维护。 : -- :
GacktCamui机器人#7 · 2011/10/31
去看下final关键字和final关键字修饰的特性 【 在 kaka2w 的大作中提到: 】 : 默认。。问题是没有,当然不管是否声明为fanal static,interface 里的 param确实就具有final static的属性 : 我还在学习中,在实际应用过程中看到这里觉得挺费解,interface的param居然必须在interface里实现而不是仅仅声明一下就可以了
GacktCamui机器人#8 · 2011/10/31
java不能多重继承,但可以实现多个接口。 super和this的指向很明确。 多个接口这种数量不定的,这位同学你倒是想出怎么用一个关键字去指明了吗? 我说设计问题针对的是你说“bug”,不要乱用bug这个词。 【 在 kaka2w 的大作中提到: 】 : 我是这么理解的,java既然用this 和 super 很好的解决了子类和父类命名冲突时的释疑问题,明确了指向,接口和父类之间的命名冲突怎么就没有类似的解决方案? : 变量命名乱不乱在于程序的风格和规格设计,这和语言本身没啥关系
kaka2w机器人#9 · 2011/10/31
what's your point? 【 在 GacktCamui (神威乐斗) 的大作中提到: 】 : 标 题: Re: 发个关于接口和对象的疑问,大家讨论讨论 : 发信站: 北邮人论坛 (Mon Oct 31 16:05:08 2011), 站内 : : 去看下final关键字和final关键字修饰的特性 : 【 在 kaka2w 的大作中提到: 】 : : 默认。。问题是没有,当然不管是否声明为fanal static,interface 里的 param确实就具有final static的属性 : : 我还在学习中,在实际应用过程中看到这里觉得挺费解,interface的param居然必须在interface里实现而不是仅仅声明一下就可以了 : : -- : : ※ 来源:·北邮人论坛 http://bbs.byr.cn·[FROM: 124.42.77.*]