接口学习的扩展(接口的静态方法,默认方法,私有方法,以及适配器设计思路)

文章介绍了Java接口中的默认方法和静态方法的使用,包括默认方法的定义格式、注意事项以及在多接口继承时的处理。同时,提到了接口的静态方法可以直接通过接口名调用。此外,文章还讨论了接口适配器设计模式,用于处理接口中大量抽象方法的情况,通过适配器类提供空实现,简化子类的实现过程。

一.接口的默认方法

接口的默认方法的价值:当设计了一个接口,若要把接口里面的函数改变了,那使用接口的实现类就要全部重写方法了,这一操作太过麻烦,因此使用了在要更改接口的前面设计默认方法,避免重写
**默认方法的定义格式

public default void method()}

接口中的默认方法的注意事项:
1.默认方法不是抽象方法,可以不用被重写,若要强制重写,去掉default关键字
2.public 可以省略,default不能省略
3.如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对这个方法进行重写
**

public interface Inter {

    /*默认方法的定义格式,public default void method()}*/

//    接口中的默认方法的注意事项:
//    1.默认方法不是抽象方法,可以不用被重写,若要强制重写,去掉default关键字
//    2.public 可以省略,default不能省略
//    3.如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对这个方法进行重写

    public default void show(){
        System.out.println("接口中的默认方法");
    }

    public abstract void method();
}
public class InterImpl implements Inter{
    @Override
    public void method() {
        System.out.println("接口的抽象方法");
    }
}
public class Test {
    public static void main(String[] args) {
        InterImpl ii=new InterImpl();

        ii.method();
        ii.show();
    }
}

二.接口的静态方法

public interface Inter {

    //接口中的静态方法不需要重写
    public static void show(){
        System.out.println("Inter 中的静态方法");
    }
    public abstract  void method();
}
public class InterImpl implements Inter{
    @Override
    public void method() {
        System.out.println("接口中的抽象方法");
    }
    public static void show(){
        System.out.println("类中的抽象方法");
    }
}
public class Test {

    public static void main(String[] args) {
        Inter.show();//接口的静态方法直接用接口名调用
        InterImpl.show();//类的抽象方法直接直接用类名调用
    }
}

## 三.接口的静态方法

暂无,等补全

四.接口的适配器设计思路

若某个接口有大量的抽象方法,实现类只需要实现接口里的某个函数则需要用到适配器

public interface Inter {
    public abstract void method1();
    public abstract void method2();
    public abstract void method3();
    public abstract void method4();
    public abstract void method5();
    public abstract void method6();
    public abstract void method7();
}
package practice7;

public class InterAdapter implements Inter{
    //作为接口适配器,实现接口抽象方法的空实现,以便子类的调用
    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }

    @Override
    public void method3() {

    }

    @Override
    public void method4() {

    }

    @Override
    public void method5() {

    }

    @Override
    public void method6() {

    }

    @Override
    public void method7() {

    }
}

public class InterImpl extends InterAdapter{
//    类只调用接口里的方法5,若直接实现接口则需要重写接口里的全部方法
//    太过繁琐,因此继承一个接口适配器类
//    再重写方法
    @Override
    public void method5(){
        System.out.println("实现方法5");
    }
}

public class Test {
    public static void main(String[] args) {
        InterImpl ii=new InterImpl();
        ii.method5();
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值