java 9新特性 接口方法私有化

接口方法私有化的作用

当我们在一个接口里写多个默认方法或者静态方法的时候,可能会遇到程序重复的问题。我们可以把这 些重复的程序提取出来,创建一个新的方法,用private进行修饰,这样就创造了一个只有接口可以调用 的私有方法。

package com.muziwk.dao;

public interface UserDao {
    default void methodA(){
        System.out.println("methodA...");
        System.out.println("A....");
        System.out.println("B....");
        System.out.println("C....");
    
    }
    
    default void methodB(){
        System.out.println("methodB...");
        System.out.println("A....");
        System.out.println("B....");
        System.out.println("C....");
    }
}

存在的问题:

以上代码的methodA与methodB存在着代码冗余问题,我们可以把这部分公共的方法抽 取成私有的方法提供给接口内部去使用。

接口私有方法的作用:

解决接口中默认方法与静态方法代码重复的问题

接口定义私有化方法

package com.muziwk.dao;

public interface UserDao {
    default void methodA(){
        System.out.println("methodA...");
        commons();
 }
    
    default void methodB(){
        System.out.println("methodB...");
        commons();
 }
    
//定一个私有的方法,把重复部分的代码抽离出来。然后在methodA与methodB方法内部去调用。
//私有方法只能在本类中调用,这里包括接口的实现类也不能调用。
private void commons(){
    System.out.println("A....");
    System.out.println("B....");
    System.out.println("C....");
    
 }
    
}

测试代码

package com.muziwk.dao.impl;
import com.muziwk.dao.UserDao;

public class UserDaoImpl implements UserDao {
    public static void main(String[] args) {
    UserDaoImpl userDao = new UserDaoImpl();
    userDao.methodA();
    userDao.methodB();
        

    }
}

小结

清楚接口方法私有化的目的?

    解决静态或者是默认方法代码重复的问题。 

如何在接口中定义私有化的方法以及调用?

    在接口中使用private修饰方法即可。 在方法的内部去调用。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容