代码先锋网 代码片段及技术文章聚合

Java学习-接口的私有方法定义及使用

技术标签: java-继承与多态-接口  java  接口

/*
问题描述:
我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题。
但是这个共有方法不应该让实现类使用,应该是私有化的。

解决方案:
从Java 9开始,接口当中允许定义私有方法。

  1. 普通私有方法,解决多个默认方法之间重复代码问题
    格式:
    private 返回值类型 方法名称(参数列表) {
    方法体
    }

  2. 静态私有方法,解决多个静态方法之间重复代码问题
    格式:
    private static 返回值类型 方法名称(参数列表) {
    方法体
    }
    */

public interface MyInterfacePrivateA {

    public default void methodDefault1() {
        System.out.println("默认方法1");
        methodCommon();
    }

    public default void methodDefault2() {
        System.out.println("默认方法2");
        methodCommon();
    }

    private void methodCommon() {
        System.out.println("AAA");
        System.out.println("BBB");
        System.out.println("CCC");
    }

}
public class MyInterfacePrivateAImpl implements MyInterfacePrivateA {

    public void methodAnother() {
        // 直接访问到了接口中的默认方法,这样是错误的!
//        methodCommon();
    }

}
public interface MyInterfacePrivateB {

    public static void methodStatic1() {
        System.out.println("静态方法1");
        methodStaticCommon();
    }

    public static void methodStatic2() {
        System.out.println("静态方法2");
        methodStaticCommon();
    }

    private static void methodStaticCommon() {
        System.out.println("AAA");
        System.out.println("BBB");
        System.out.println("CCC");
    }

}

public class Demo04Interface {

    public static void main(String[] args) {
        MyInterfacePrivateB.methodStatic1();
        MyInterfacePrivateB.methodStatic2();
        // 错误写法!
//        MyInterfacePrivateB.methodStaticCommon();
    }

}

版权声明:本文为qq_44813352原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44813352/article/details/104341468

智能推荐

Java 接口private私有方法

问题描述: 我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题。 但是这个共有方法不应该让实现类使用,应该是私有化的。 解决方案: 从Java 9开始,接口当中允许定义私有方法。 普通私有方法,解决多个默认方法之间重复代码问题 格式: 静态私有方法,解决多个静态方法之间重复代码问题 格式:...

接口的私有方法

问题描述: 我们需要抽取一个公有方法,用来解决两个默认方法之间重复代码的问题,但这个公有方法不能让实现类使用,应该是私有化的 解决方案: 从java9开始,接口中可以定义私有方法 1.普通私有方法:解决多个默认方法之间的代码重复问题 格式: private 返回值类型 方法名称(参数列表){ 方法体 } 2.静态私有方法,解决多个静态方法之间的代码重复问题 格式: private static 返...

JAVA---jdk1.8之后的接口(接口中定义默认方法和静态方法,私有方法)

JAVA—jdk1.8之后的接口(接口中定义默认方法和静态方法) 从jdk1.8开始,接口里允许定义默认方法 格式:public default 返回值类型 方法名(参数列表){ 方法体 } 为什么要定义默认方法?为了解决接口升级的问题 什么是接口升级? 如果当前有一个接口,并且n多个类实现了这个接口;而当接口再次添加抽象方法的时候,n多个实现类就会报错。而出现了默认方法就解决了这个问...

IDEA-接口概述、定义格式、基本使用、私有方法

接口就是多个类的公共规范 接口是一种引用数据类型,最重要的内容就是其中的:抽象方法 如何定义一个接口的格式: public interface 接口名称 { //接口内容 } 备注: 换成了关键字interface之后,编译生成的字节码文件仍然是.java --> .class。 如果是Java7,接口中可以包含的内容有: 1.常量 2.抽象方法 如果是Java8,还可以额外包含有: 3.默...

使用java反射,获取类的私有属性,调用类的私有方法

文章目录 使用java反射,获取类的私有属性,调用类的私有方法 使用java反射,获取类的私有属性,调用类的私有方法...

猜你喜欢

接口中的默认方法和私有方法

在本教程中,我们将研究接口内的默认方法和私有方法。 Java 8中添加了默认方法,从而允许将方法添加到具有默认实现的接口中,该默认实现可以被使用,覆盖或忽略,而不会引起实现该接口的现有类的问题。 添加默认方法时,缺少私有方法,以防止代码在接口内拆分为较小的方法。 这让我有些反感,好像您的默认方法过长了一样,根本无法整理它。 因此,既然接口中既可以使用默认方法,也可以使用私有方法,那么我们可以像以前...

Java9 接口支持私有方法

1、接口支持私有方法 Java9 不仅像Java8一样支持接口默认方法,同时还支持私有方法,这样看来抽象类越来越没有用武之地了………………...

Java 8:声明接口中的私有方法和受保护的方法

引入Java 8时,我们可以在接口中使用默认方法。 此功能的主要驱动程序是允许扩展接口,同时保留对旧接口版本的向后兼容性。 一个示例是在现有Collection类中引入stream()方法。 有时,当我们想引入几种默认方法时,它们可能共享一些通用的代码库,因此,如果我们可以在接口中使用私有方法,那就太好了。 这样,我们可以重用我们的代码,还可以防止代码暴露给正在使用或正在实现接口的类。 但有一个问...

剑指offer | 数组中出现次数超过一半的数字

题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路: ①作一个判断条件。 ②作俩个for循环,用每一个值依次和后面的值作比较。 ③当这俩个值相等时,计数加一。 ④当计数值大于数组长度的一半时,输出这个值就好了。 这里要注意in...

大多数元素 A

描述 接收一个列表,找出其中数量最多的元素,如果元素数量相同,选择列表中靠前的元素输出。 测试用例: 用例1: 输入: [3,2,3] 输出: 3 用例2: 输入: [2] 输出: 2 解析:...