子类继承父类的同时又去实现一个成员变量、方法与父类相同的接口,最后调的是谁的成员变量和方法?

您所在的位置:网站首页 淘宝美人计旗舰店是真的吗 子类继承父类的同时又去实现一个成员变量、方法与父类相同的接口,最后调的是谁的成员变量和方法?

子类继承父类的同时又去实现一个成员变量、方法与父类相同的接口,最后调的是谁的成员变量和方法?

2024-06-16 06:20| 来源: 网络整理| 查看: 265

此文只讨论如题的这种情况,不要问我为什么这么逗逼,面试题就是这么逗逼!!

接口代码如下:

public interface MyInterface {int n = 10;String str = "接口成员变量";//接口方法不能实现,所以是不能出现{}public void doSomething() ;}

父类代码如下:

public abstract class ParentClass {int n = 30;String str = "抽象类的成员变量";//顺便提一下,抽象方法是不能有{}的//public abstract void doSomething() {};public abstract void doSomething() ;//非抽象方法才可以有{}public void doSomething2() {};}

子类代码如下:

public class SubClass extends ParentClass implements MyInterface {@Overridepublic void doSomething() {//如果打开下面这话代码的注释,IDE会提示n和str是ambiguous(暧昧的、混淆的),无法通过编译//System.out.println("在子类重写方法里打印,结果:n = " + n + ",调用的是:" + str);System.out.println("在子类重写方法里打印,结果:n = " + super.n + ",调用的是:" + super.str);}}

Main函数如下:

public static void main(String[] args) {SubClass subClass = new SubClass();subClass.doSomething();}

执行结果:在子类重写方法里打印,结果:n = 30,调用的是:抽象类的成员变量

总结:当出现子类继承父类的同时又去实现一个成员变量、方法与父类相同的接口时,重写的是父类的方法,接口的方法被隐藏。

如果子类没有定义跟父类、接口一样的成员变量,则需要通过super关键字调用父类的成员变量,接口的成员则无法调用,而且这个时候不用super关键的话,IDE会提示使用的成员变量是ambiguous(暧昧的、混淆的),无法通过编译;

如果子类同时还定义了跟父类、接口一样的成员变量,可以直接调它本身的成员变量,能过super关键字可以调父类的成员变量,而接口的成员变量则无法调用。

以上测试,关于怎么在子类中显式地调接口的成员变量和方法,如有童鞋知道的话,请告知哦。多谢了~

从别地方拷来的补充知识点:

子类在隐藏了父类的成员变量或重载了父类的方法后,常常还要用到父类的成员变量,或在重载的方法中使用父类中被重载的方法以简化代码的编写,这时就要访问父类的成员变量或调用父类的方法,Java中通过super来实现对父类成员的访问。Java中,this用来引用当前对象,与this 类似,super用来引用当前对象的父类。super的使用有三种情况:1. 用来访问父类被隐藏的成员变量,如:super.variable2. 用来调用父类中被重载的方法,如:super.Method ( [paramlist] );3. 用来调用父类的构造函数,如: super( [paramlist] );

更多关于Java对象继承和接口实现的基础知识,可以参见以下地址:

http://61.187.10.76/java/htm/ch7/7-1.htm

http://my.oschina.net/u/617660/blog/83427

2 0 子类继承父类的同时又去实现一个成员变量、方法与父类相同的接口,最后调的是谁的成员变量和方法? Java 理解 子类成员变量与父类成员变量同名 方法的重写 父类成员变量与子类成员变量的关系 子类的父类和接口有相同的成员变量 子类父类的成员变量一起初始化的方法 Java父、子类成员变量和方法的调用关系 继承 子类对父类成员变量的覆盖 子类覆盖父类的成员变量 父类调用子类的成员变量 父类和子类有相同成员变量时的例子 java中的成员方法与成员变量的继承 java中的成员方法与成员变量的继承 java 继承时子类父类的静态非静态成员变量,构造方法,静态代码块的初始化顺序 继承成员变量和成员方法的区别 Java 继承 父类变量, 方法 与子类的关系: js 类的成员变量和方法 Java子类调用其父类和接口的成员变量 Java 拾遗补阙 ----- 继承父类的成员变量与方法区别 Gvim入门(1)——三种基本模式 面试 3.求平均数 C++数据类型重载 Android 开源框架Universal-Image-Loader完全解析(三)---源代码解读 子类继承父类的同时又去实现一个成员变量、方法与父类相同的接口,最后调的是谁的成员变量和方法? 策略模式在android中使用 python urllib2详解及实例 第八周-运算符重载-分数类中的运算符重载-四则运算 android之Eclipse如何使用adb MVC框架的优缺点 js复选框 JS在firefox和IE下差异及解决方案 oracle中Blob和Clob类型的区别与用法


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3