在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

}

}

以上这篇浅谈Java 继承接口同名函数问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持云海天教程。

原文链接:https://blog.csdn.net/yurenfan/article/details/55803164

java同名函数_浅谈Java 继承接口同名函数问题相关推荐

  1. java 多线程同步_浅谈Java多线程(状态、同步等)

    Java多线程是Java程序员必须掌握的基本的知识点,这块知识点比较复杂,知识点也比较多,今天我们一一来聊下Java多线程,系统的整理下这部分内容. 一.Java中线程创建的三种方式: 1.通过继承T ...

  2. java对象头_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  3. java bitset用途_浅谈Java BitSet使用场景和代码示例

    搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...

  4. java手动回收_浅谈java是如何做资源回收补救的

    学习java的过程,我们经常谈论一个对象的回收,尤其是资源类型,如果没有显示的关闭,对象就被回收了,说明出现了资源泄漏.java本身为了防止这种情况,做了一些担保的方式,确保可以让未关闭的资源合理回收 ...

  5. python hasattr函数_浅谈python中的getattr函数 hasattr函数

    hasattr(object, name) 作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的). 示例: & ...

  6. java list翻转_浅谈Java数据结构中的常见问题

    1.常用数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素间的关系组成.常用的数据有:数组.栈.队列.链表.树.图.堆.散列表. 1)数组:在内存中连续存储多个元素的 ...

  7. java并发计数器_浅谈java并发之计数器CountDownLatch

    CountDownLatch简介 CountDownLatch顾名思义,count + down + latch = 计数 + 减 + 门闩(这么拆分也是便于记忆=_=) 可以理解这个东西就是个计数器 ...

  8. java反射 用处_浅谈Java反射

    一.何为反射 反射就是对于任何一个类都能知道这个类的的所有属性和方法,并且对于任何一个对象都能调用他的属性和方法,而且能修改其属性. 二.反射的作用 就我的理解来看,通常我们在写代码的时会非常强调代码 ...

  9. 00005在java结果输出_浅谈Java反序列化漏洞原理(案例未完善后续补充)

    摘要: 0005,这个16进制流基本上也意味者java反序列化的开始:(2)HTTP:必有rO0AB,其实这就是aced0005的base64编码的结果:以上意味着存在Java反序列化,可尝试构造pa ...

最新文章

  1. 学习汇编语言 -王爽,自已完成的一道课程设计题 (5)
  2. Java02-day02【运算符(赋值、关系、逻辑、三元、算数、自增自减)、分支语句(顺序结构、if语句)】
  3. [TimLinux] PyQt5 安装部署
  4. stm32气压传感器 带探头的_ST SSC 频道 | 基于ST STM32F302R8T6 电机空气压缩机方案
  5. 数据库——环境初建改端口和密码(转)
  6. mysql 主从备份 主服务器配置_同一服务器配置Mysql主从备份
  7. html页面缓存meta,html中怎么用meta语句禁用页面缓存?
  8. Unicode - 想说爱你不容易
  9. [Java] 蓝桥杯ADV-91 算法提高 素数判断
  10. 得到多组单选框的值_多组学如何构建预后预测模型,还发了7分+?
  11. 如何在繁忙的工作中锻炼身体?
  12. Android ADB 你想要的都在这
  13. jackson 用法总结
  14. 计算机二级c语言考点变化,计算机二级C语言考点归纳汇总.doc
  15. 轴承后缀ce和ca_SKF各类型轴承后缀含义
  16. oracle 时间毫秒数,计算Oracle中两个时间戳之差(以毫秒为单位)
  17. mac 装java ecli_Eclipse下Maven安装和配置
  18. 寻找 Web3 的灵魂
  19. 微信公众平台模拟登陆和发送消息详解
  20. 以太坊平台增加类 CrytoNote 环签名

热门文章

  1. WebView 和JS 之间交互
  2. 数据镜像备份工具rsync
  3. JS splice()方法
  4. 小女也爱c#(3)--俄罗斯方块练习数组
  5. spotify歌曲下载_使用Spotify数据预测哪些“ Novidades da semana”歌曲会成为热门歌曲
  6. 管道过滤模式 大数据_大数据管道配方
  7. 什么是数据仓库,何时以及为什么要考虑一个
  8. 剑指 Offer 53 - I. 在排序数组中查找数字 I(二分法)
  9. leetcode264. 丑数 II
  10. 审查指南 最新版本_代码审查-最终指南