java 接口的私有方法

文章探讨了Java8中接口引入私有方法的特性,指出私有方法无法直接被接口的实现类调用。通过示例代码展示了如何通过静态方法调用静态私有方法,以及默认方法可以调用非静态私有方法。强调了接口的静态方法和默认方法在访问私有方法上的不同权限。

其实java8就已经做下伏笔了 在拥有静态和默认 两种拥有方法体的方法之后 接口出现私有方法也是一种必然

然后我们来创建一个包

包下创建一个接口 subInterface 参考代码如下

public interface subInterface {
   private void show2() {
        System.out.println("我是一个私有方法");
    }
}

然后我们创建一个类 realizationMethod 参考代码如下

public class realizationMethod implements subInterface {
    
}

然后我们创建测试类 通过realizationMethod类来实现subInterface
参考代码如下

public class text {
    public static void main(String args[]) {
        subInterface real = new realizationMethod();
        real.show2();
    }
}

但这里你就会发现 无论是 用接口 还是用实现接口的对象 调用私有方法都是会报错的

在这里插入图片描述
在这里插入图片描述
因为 他是一个私有的方法 是接口独有的

然后 用接口的实现类调用 也会报错的 然后 我们试着 在接口里写一个静态方法 然后通过静态方法调用它

在这里插入图片描述
但是 我们会发现他还是报错了

我们改一下show2的作用域 将subInterface的接口修改如下

public interface subInterface {
    private static void show2() {
        System.out.println("我是一个私有方法");
    }
    static void show3(){
        show2();
    }
}

将私有的
show2加上一个static同类中的其他方法就能拿到他了 然后在测试类通过接口名调用show3 show3就会调用show2

测试类代码修改如下

public class text {
    public static void main(String args[]) {
        subInterface real = new realizationMethod();
        subInterface.show3();
    }
}

运行结果如下
在这里插入图片描述

当然 普通的私有方法 也是有人能调的 那就是 默认方法 他就可以调用没有static修饰的私有方法

subInterface接口代码修改如下

public interface subInterface {
    private void show2() {
        System.out.println("我是一个私有方法");
    }
    static void show3(){
    }
    default void show4(){
        show2();
    }
}

然后 测试类修改代码如下

public class text {
    public static void main(String args[]) {
        subInterface real = new realizationMethod();
        real.show4();
    }
}

运行结果如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值