【急】关于static的一个小问题

一道题目,见图。为什么答案是1211,而不是1231.是接口中的static 和final修饰符怎么
样的过程道理得出的结果能说说吗图片说明

4个回答

这个问题的关键在于理解你的类中有两个mode,一个是从接口继承来的,一个是从基类继承来的,同名的字段,到底输出的是哪一个。
java采取的是就近原则,如果本类型有,基类型也有,那么选择本类型的。继承的基类的方法,看不到派生类定义的mode,所以用的还是接口的mode,所以是1不是3。
最后一个,接口的优先级高于基类。

Jhon2015
oneMoreJohn 还有那个接口和基类的优先级的问题能扩展说一下吗。谢谢啦
接近 5 年之前 回复
caozhy
回答这么多问题就耍赖把我的积分一笔勾销了 回复Jhonme: 只是因为你基类有个同名的成员,你掩盖了这个问题。
接近 5 年之前 回复
caozhy
回答这么多问题就耍赖把我的积分一笔勾销了 回复Jhonme: 任何情况下,基类都不可能得到派生类定义的成员
接近 5 年之前 回复
Jhon2015
oneMoreJohn 这里不是很懂。
接近 5 年之前 回复
Jhon2015
oneMoreJohn 为什么会看不到派生类定义的mode了
接近 5 年之前 回复

这个很static没有关系,主要是因为P3的play方法是继承于父类的,所以父类方法访问的MODE变量也是父类的1,所以结果就是这个了。通常父类很子类有相同名称的成员变量时,各自方法中访问的变量是各自的。

Jhon2015
oneMoreJohn 很好解决我的问题了。谢谢
接近 5 年之前 回复
Jhon2015
oneMoreJohn 谢谢~
接近 5 年之前 回复

难道不是1212吗?第四个属性继承了啊

是1212,你说的对

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐