浅谈Java 继承接口同名函数问题

网友投稿 258 2023-03-09

浅谈Java 继承接口同名函数问题

在java中如果一个类同时继承接口A与B,并且这两个接口中具有同名方法,会怎么样?

动手做实验:

interface A{

void fun();

}

interface B{

void fun();

}

interface C extends A,B{

}

public class Test implements C{

@Override

public void fun() {

System.out.println("hehe");

}

public static void main(String[] args) {

new Test().fun();

}

}

运行截图:

上例的情况,可以正常编译运行,输出"hehe",因为A与B中的fun具有相同的签名(参数个数与类型相同)

interface A{

void fun();

}

interface B{

int fun(int x);

}

interface C extends A,B{

}

public class Test implements C{

@Override

public void fun() {

System.out.println("hehe1");

}

@Override

public int fun(int x) {

return 0;

}

public static void main(String[] args) {

new Test().fun();

}

}

上例也是可以编译运行的,因为A与B中的fun方法具有不同的函数签名,本质上是两个方法,分别实现即可。

interface A{

void fun();

}

interface B{

int fun();

}

interface C extends A,B{

}

public class Test implements C{

@Override

public void fun() {

System.out.println("hehe");

}

public static void main(SqJrNTzwgtring[] args) {

new Test().fun();

}

}

而这种具有相同函数签名,但不同返回值的方法,是没有办法编译的,接口C便已经无法编译。

补充知识:http://java 类implements多个接口含有相同名字函数

java 类不能多继承 class A extends B,C{}是不允许的

但能实现多个接口 class A implements B,C{}是可以的,而多个接口中如果出现相同名字函数:

interface in1{

public void fun1();

public void fun2();

}

interface in2{

public void fun1();

public void fun3();

}

只许实现一个即可:

class fun implements in1,in2{

public void fun3() {

// TODO Auto-generated method stub

}

public void fun1() {

// TODO Auto-generated method stub

}

public void fun2() {

// TODO Auto-generated method stub

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java双向链表倒置功能实现过程解析
下一篇:java 父类子类有同名方法时如何调用的实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~