多接口重名常量
问题描述:
老师,您好!如图,当类Person的父类A中存在和接口B、C重名的常量,我使用接口仍然可以调用B、C中的常量i并没有出现无法自动解析这个重名常量,那为什么和视频里不一样,还要在子类中定义独有的变量成员?
10
收起
正在回答
1回答
同学你好~
1.接口中的属性,无论是否完整书写修饰符,它的修饰符都是“public static final”的,所以任何情况下,都可以通过静态的语法去进行访问,即通过“接口名.属性名”的形式。
所以同学代码中使用接口名去访问时,与是否存在重名是无关的。
2.由于子类会继承父类或者父接口中的属性,所以如果父类与父接口中都没有定义重名的属性时,子类是可以通过继承的语法去访问该属性。
3.当父类与父接口,或多个父接口间存在重名的变量时,就不能直接使用继承的语法去访问了,必须通过指定属性来源的方式去访问:
(1)指定属性来源于父接口的语法是:通过静态的方式访问父接口的属性,即通过“接口名.属性名”的形式。
(2)指定属性来源于父类,并且该属性不是静态的,语法是:通过super关键字去访问,即通过“super.属性名”的形式。
(3)指定属性来源于父类,并且该属性也是静态的,语法是:可以通过super关键字去访问,但是不建议这样做,而是建议通过静态的方式去访问,即通过“类名.属性名”的形式。
综上所述,当父类或父接口中存在重名属性时,子类必须指定属性的来源。但是并不要求子类必须定义同名的属性。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星