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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

inerface IHello {

String sayHello(String name);

}

interface IHi {

String sayHi(String name);

}

class ServiceImplimplements IHello, IHi {// 实现三个四个。。。n个接口都是使用逗号分隔

public String sayHello(String name) {

return "Hello, " + name;

}

public String sayHi(String name) {

return "Hi, " + name;

}

}

inerface IHello {

String sayHello(String name);

}

interface IHi {

String sayHi(String name);

}

class ServiceImpl implements IHello, IHi {// 实现三个四个。。。n个接口都是使用逗号分隔

public String sayHello(String name) {

return "Hello, " + name;

}

public String sayHi(String name) {

return "Hi, " + name;

}

}

补充知识:Java 一个类实现的多个接口,有相同签名的default方法会怎么办?

看代码吧~?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

public interface A {

default void hello() {

System.out.println("Hello from A");

}

}

public interface Bextends A {

default void hello() {

System.out.println("Hello from B");

}

}

public class Cimplements B, A {

public static void main(String... args) {

new C().hello();

}

}

public interface A {

default void hello() {

System.out.println("Hello from A");

}

}

public interface B extends A {

default void hello() {

System.out.println("Hello from B");

}

}

public class C implements B, A {

public static void main(String... args) {

new C().hello();

}

}

这段代码,会打印什么呢?

有三条规则

类永远赢。类声明的方法,或者超类声明的方法,比default方法的优先级高

否则,子接口赢

否则,如果集成自多个接口,必须明确选择某接口的方法

上面代码的UML图如下

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

Hello from B

如果这样呢??

1

2

3

4

5

6

7

8

public class Dimplements A{

}

public class Cextends Dimplements B, A {

public static void main(String... args) {

new C().hello();

}

}

public class D implements A{

}

public class C extends D implements B, A {

public static void main(String... args) {

new C().hello();

}

}

UML图是这样的

规则1说,类声明的方法优先级高,但是,D没有覆盖hello方法,它只是实现了接口A。所以,它的default方法来自接口A。规则2说,如果类和超类没有方法,就是子接口赢。所以,程序打印的还是“Hello from B”。

所以,如果这样修改代码?

1

2

3

4

5

6

7

8

9

10

public class Dimplements A{

void hello(){

System.out.println("Hello from D");

}

}

public class Cextends Dimplements B, A {

public static void main(String... args) {

new C().hello();

}

}

public class D implements A{

void hello(){

System.out.println("Hello from D");

}

}

public class C extends D implements B, A {

public static void main(String... args) {

new C().hello();

}

}

程序的输出就是“Hello from D”。

如果D这样写?

1

2

3

public abstract class Dimplements A {

public abstract void hello();

}

public abstract class D implements A {

public abstract void hello();

}

C就只能实现自己的抽象方法hello了。

如果是这样的代码呢?

1

2

3

4

5

6

7

8

9

10

11

12

13

public interface A {

default void hello() {

System.out.println("Hello from A");

}

}

public interface B {

default void hello() {

System.out.println("Hello from B");

}

}

public class Cimplements B, A {

}

public interface A {

default void hello() {

System.out.println("Hello from A");

}

}

public interface B {

default void hello() {

System.out.println("Hello from B");

}

}

public class C implements B, A {

}

UML图如下

会生成这样的编译器错误

"Error: class C inherits unrelated defaults for hello() from types B and A."

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

1

2

3

4

5

public class Cimplements B, A {

void hello(){

B.super.hello();

}

}

public class C implements B, A {

void hello(){

B.super.hello();

}

}

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

public interface A{

default void hello(){

System.out.println("Hello from A");

}

}

public interface Bextends A {

}

public interface Cextends A {

}

public class Dimplements B, C {

public static void main(String... args) {

new D().hello();

}

}

public interface A{

default void hello(){

System.out.println("Hello from A");

}

}

public interface B extends A {

}

public interface C extends A {

}

public class D implements B, C {

public static void main(String... args) {

new D().hello();

}

}

UML图是这样的

很明显,还是不能编译。

以上这篇java 一个类实现两个接口的案例就是小编分享给大家的全部内容了,

java电脑类的接口_java 一个类实现两个接口的案例相关推荐

  1. Java开发规范,不要新建一个类就实现Serializable接口

    个人网站:http://xiaocaoshare.com/ 作为一名java开发者,细节决定技术的高度和深度 一个java类什么时候需要实现Serializable接口 1.什么是Serializab ...

  2. java类里面再定一个类_java类的里面可以再定义一个类吗 java里可不可以在一个...

    java类里面还可以定义一个类,即内部类. java内部类分为: 成员内部类.静态嵌套类.方法内部类.匿名内部类 . 内部类的共性 (1).内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的. ...

  3. 一个java应用程序必须且只有一个类含有什么方法_JAVA简答题!!!

    Java简答题 1.简述java语言的特点? 1.2 Java语言是目前使用最为广泛的网络编程语言之一(1分) 具有面向对象(1分) 与平台无关性(1分) 多线程性(1分) 动态性等特点(1分) 2. ...

  4. java怎么调用另一个类的方法_在一个类中访问另一个类的方法

    在一个类中访问另一个类的方法 由于Java应用程序是由若干个类构成的,因此经常需要在一个类中访问另一个类中的成员和方法,请问应该如何在一个类中访问另一个类的方法?下面是由百分网小编为大家整理的在一个类 ...

  5. java中的复合数据类型是什么_【填空题】类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素。一个类的实现包括两部分:____和_____....

    [填空题]类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素.一个类的实现包括两部分:____和_____. 更多相关问题 [名词解释] 观叶树木 [单选] 开花时有浓郁香气的树种是 ...

  6. java有且只有一个什么_1. 一个Java应用程序必须且只有一个类含有 main_____ 方法....

    1.一个Java应用程序必须且只有一个类含有main_____方法.2.构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,并不返回任何数据类型.3.子类自然地继承了其父类中不是... 1 ...

  7. java compareable接口_Java对象比较-Comparable和Comparator接口使用

    最近在学习贪心算法和动态规划的过程中,里面有一段自然排序的操作,顺便简单了解一下Java中对象比较后排序要使用的两个接口:Comparable和Comparator.如果是数字,直接比较就行,但是如果 ...

  8. 不能将brassplus类型的值分配到brass类的实体_Java 基础 - 类与对象

    类.对象和引用的关系 类和对象的关系 类是对象的模版,对象是类的一个实例,一个类可以有很多对象 一个Java程序中类名相同的类只能有一个,也就是类型不会重名 一个对象只能根据一个类来创建 引用和类以及 ...

  9. php引入类的位置,php如何在一个类中引入另外一个类

    有时候需要在一个类中调用另外一个类里面的方法,然后另外一个类又需要调用当前类的方法,怎么办呢?下面是具体的介绍.希望对大家有用,更多内容请关注应届毕业生网! 可以直接引入类对象的方式调用另外一个类的方 ...

最新文章

  1. Android 底部导航栏添加消息数目提示
  2. java四种线程池类型以及可选择的阻塞队列
  3. python自学行_怎么自学python?
  4. ThinkPHP3.2 常量参考
  5. vb设置excel 字体 加粗 微软雅黑_Python操作Excel的Xlwings教程(六)
  6. 插件怎么用_PPT插件怎么用?用好了10s就能给出一个动画特效,不好看不要钱
  7. Android.mk 语法详解
  8. js 获取url参数_小总结 - JS获取页面URL信息
  9. 圆我一个游戏梦,XNA版超级玛丽
  10. 厦门大学计算机调剂要求,厦门大学调剂公告
  11. libdmtx结合OpenCV识别DataMatrix二维码
  12. Problem F - Football Free Kick(数组1e9的插入和删除)
  13. DirectX修复工具使用
  14. C++快速入门学习笔记(一)
  15. Vue3初识 学习记录(一)
  16. Mysql给一个大表加一列_MySQL 大表添加一列的实现
  17. LikeLib区块链底层公链技术应用
  18. 原生JS简单的无缝自动轮播
  19. 使用插件将网页翻译成中文
  20. 华硕ddns注册ip地址不正确_华硕路由器 ddns注册成功,但是连接不上,怎么修改成别的ddns...

热门文章

  1. java 协议处理器_协议处理器urlstreamhandler及contenthandler
  2. java tostring方法_Java虚拟机如执行方法调用的(二)?
  3. 一致性哈希解决的问题
  4. C++引用与指针的不同
  5. 应用程序利用ADO对象访问数据库
  6. Oracle 软件的安装
  7. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 17丨文章浏览 II【难度中等】​
  8. 安卓逆向_5 --- Android 学习
  9. 小甲鱼 OllyDbg 教程系列 (十三) : 把代码和变量注入程序 以及 硬件断点
  10. amd cpu不能在cmd环境下运行java代码_如何在Windows10中配置java的JDK环境