java如何实现一个类两个接口

  介绍

本篇文章给大家分享的是有关java如何实现一个类两个接口,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

直接用英文逗号分隔就可以了,比如:

交互IHello {
  字符串sayHello(字符串名称);
  
  }
  接口IHi {
  sayHi字符串(字符串名称);
  
  }
  
  类ServiceImpl实现IHello IHi{//实现三个四个…n个接口都是使用逗号分隔
  公共字符串sayHello(字符串名称){
  返回“你好,“+名称;
  
  }
  公共sayHi字符串(字符串名称){
  返回“嗨,“+名称;
  
  }
  }

<强> Java一个类实现的多个接口,有相同签名的违约方法会怎么办?

看代码吧~

 

所以,上面的代码,输出是

你好从B

如果这样呢?

公共类D实现{
  
  }
  公共类C扩展D实现B, {
  公共静态void main(字符串…args) {
  新的C () .hello ();
  }
  }

UML图是这样的

癹ava如何实现一个类两个接口"

规则1说,类声明的方法优先级高,但是,D没有覆盖你好方法,它只是实现了接口a所以,它的违约方法来自接口答:规则2说,如果类和超类没有方法,就是子接口赢。所以,程序打印的还是“你好”从B。

所以,如果这样修改代码

公共类D实现{
  空白hello () {
  System.out.println(“你好从D");
  }
  }
  公共类C扩展D实现B, {
  公共静态void main(字符串…args) {
  新的C () .hello ();
  }
  }

程序的输出就是“你好”从D。

如果D这样写

公共接口
  默认空hello () {
  System.out.println(“你好从A");
  }
  }
  公共接口B {
  默认空hello () {
  System.out.println(“你好从B");
  }
  }
  公共类C实现B, {
  
  }

UML图如下

癹ava如何实现一个类两个接口"

会生成这样的编译器错误

“错误:C类继承无关的违约hello()类型B和A !”

怎么修改代码呢?只能明确覆盖某接口的方法

公共类C实现B, {
  空白hello () {
  B.super.hello ();
  }
  }

如果代码是这样的,又会怎样呢?

以上就是java如何实现一个类两个接口,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

java如何实现一个类两个接口