浅谈Java 继承接口同名函数问题
作者:-微笑以后- 时间:2023-07-22 13:28:47
在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(String[] args) {
new Test().fun();
}
}
而这种具有相同函数签名,但不同返回值的方法,是没有办法编译的,接口C便已经无法编译。
补充知识: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
}
}
来源:https://blog.csdn.net/yurenfan/article/details/55803164
标签:Java,继承,接口,同名
0
投稿
猜你喜欢
Android底部菜单栏(RadioGroup+Fragment)美化
2023-01-06 05:09:56
Java中两个字符串进行大小比较的方法
2023-10-12 13:39:26
基于Retrofit2+RxJava2实现Android App自动更新
2021-09-04 20:19:29
WPF实现3D翻牌式倒计时特效
2021-11-11 16:08:21
一文带你了解如何正确使用Java中的字符串常量池
2022-07-13 01:35:30
用命令行编译java并生成可执行的jar包方法
2023-01-15 23:21:35
Android显示系统SurfaceFlinger详解
2022-11-02 12:39:53
Intellij IDEA 2018配置Java运行环境的方法步骤
2023-06-08 09:56:50
IDEA教程创建SpringBoot前后端分离项目示例图解
2022-06-30 02:41:10
C#添加Windows服务 定时任务
2021-10-07 15:12:22
全面理解java中的异常处理机制
2023-10-26 04:08:20
java如何对map进行排序详解(map集合的使用)
2022-12-22 18:26:13
接口签名怎么用Java实现
2023-02-18 03:22:10
Android中检查、监听电量和充电状态的方法
2023-05-15 23:23:19
基于IntelliJ IDEA的类注释和方法注释操作
2023-03-04 02:00:31
深入剖析Android消息机制原理
2023-09-30 01:57:11
Android Fragment概述及用法
2022-08-23 15:54:22
C# 并行和多线程编程——认识和使用Task
2022-03-28 05:48:04
C#设计模式实现之生成器模式和责任链模式
2023-12-19 21:57:51
详解C#对路径...的访问被拒绝解决过程
2021-06-01 11:12:10