首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从父接口调用子接口方法

从父接口调用子接口方法
EN

Stack Overflow用户
提问于 2018-03-15 00:03:06
回答 1查看 581关注 0票数 0

如何从接口i2默认方法disp2()调用接口i1默认方法disp1().Is it possible?

代码语言:javascript
运行
复制
interface i1 { 
    default void disp1() { System.out.println("Super interface"); }
}

interface i2 extends i1 {
    default void disp2() { System.out.println("Sub  interface"); }
}
EN

回答 1

Stack Overflow用户

发布于 2018-03-15 02:47:15

通过选角。

例如,如果您有一个实现i2的类,因此也实现了i1

代码语言:javascript
运行
复制
public class C implements i2 {
    public static void main(String[] args) {
        C c = new C();
        c.disp1();
    }
}

如果安全,disp1()方法可以将自身强制转换为i2

代码语言:javascript
运行
复制
interface i1 {
    default void disp1() {
        System.out.println("Super interface");
        if (this instanceof i2)
            ((i2) this).disp2();
    }
}

这将输出两行:

代码语言:javascript
运行
复制
Super interface
Sub  interface

或者,作为一种更面向对象的方法,您可以在i1中添加disp2()方法吗?然后i2会简单地覆盖它:

代码语言:javascript
运行
复制
interface i1 {
    default void disp1() {
        System.out.println("Super interface");
        ((i2) this).disp2();
    }

    default void disp2() {

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49282496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档