02-接口interface 新花样

本文讨论了Java8中如何通过在接口中使用`default`关键字实现流操作,并提及了这种方法如何避免对大量实现类的影响。同时,文章还介绍了JDK9中接口私有方法的引入,使得接口方法的可见性得以控制。
摘要由CSDN通过智能技术生成

接口也能写实现 - default

JDK8:我要实现流,我要让集合类实现stream() 方法
我:你准备怎么实现
JDK8: 我要在interface Collection 上新加一个方法 stream
我:Collection 上加一个方法可是大事啊,Collection 在java里面可是有很大的势力的啊,麾下实现类数不胜数,世界各地都在使用实现类,你加一个方法,所有的实现类都要进行实现。你自家人 arrayList,linkedlist,map还好说,外家兄弟怎么说,俗话说 断人财路,如同杀人父母, 别人一人一口吐沫就能淹死你。
JDK8: …
JDK8: …
JDK8: 那我就默认实现,interface里面也可以写方法,但是要使用 defualt 声明。使用defualt 定义的方法,实现类可以默认不进行实现,这样就能解决问题,就能不被口诛笔伐了 😊😊
我: 厉害了呀,这样的话是不是也可以做模版模式,抽象一个固定的模版方法为default,差异化的方法让他的实现类实现就行?
JDK8: 牛啊

public interface NameInterface {  
  
    String name();  


    //defualt 定义模版方法
    default void test() { 
        System.out.println("all init");
        System.out.println("my name is " + name()); 
        System.out.println("all doing something"); 
    }  
  
  
    class Dog implements NameInterface {  
  
        @Override  
        public String name() {  
            return "dog";  
        }  
    }  
  
    public static void main(String[] args) {  
	    //匿名内部类
        NameInterface cat = new NameInterface() {  
            @Override  
            public String name() {  
                return "cat";  
            }  
        };  
        
        NameInterface dog = new Dog();  
  
        System.out.println(dog.name());  
        System.out.println(cat.name());  
  
    }  
  
}

接口也能private - JDK9

JDK9: 接口类一版都是共有方法,但是我的上一辈引入了defualt 关键字之后,接口也能实现方法了, 这个也随之造成了方法的公开和私有性,有一些接口上的函数是不需要公开对外的,那就在我这里实现吧! 接口 interface 的private 私有化接口!!

public interface PrivateInterface {  
  
  
    private String pm() { // private 自动 default  
        return "self private";  
    }  
  
    default void test() {  
        System.out.println(pm());  
    }  
  
    class Demo implements  PrivateInterface {}  
  
  
    public static void main(String[] args) {  
  
  
        Demo demo = new Demo();  
        demo.test();  
  
        // demo.pm(); 'pm()' has private access in 'com.hjh.test.PrivateInterface'  
  
  
    }  
  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值