接口 Interface 和接口的 默认方法 的使用

1.接口 Interface

1. 抽象方法在接口中的定义

在任何版本的Java中,接口都可以定义抽象方法

格式:
    public abstract 返回值类型 方法名称();
【注意事项】
    1、接口中,方法的修饰符必须是两个归固定的关键字:   public abstract
    2、这两个关键字可以选择性的省略
//MyInterfaceAbstract-implements
public interface MyInterfaceAbstract {

    //以下都是正确的抽象方法的定义
    public abstract void method1();
    abstract void method2();
    public void method3();
    void method4();
}

2. 接口的使用

  1. 接口不能直接使用,必须有一个 “ 实现类 ” 来 “ 实现 ” 该功能

    格式:public class 实现类名称 implements 接口名称{

    //…

    }

    2.接口的 “ 实现类 ”必须覆盖重写(实习)接口中所有的抽象方法

​ 3.使用的时候,不能直接创建接口的对象,必须创建(new)是实现类的对象,进行使用

//实现类-MyInterfaceAbstract-class
public class MyInterfaceAbstractImpl implements MyInterfaceAbstract{

    @Override
    public void method1() {
        System.out.println("这是第一个方法");
    }

    @Override
    public void method2() {
        System.out.println("这是第二个方法");
    }

    @Override
    public void method3() {
        System.out.println("这是第三个方法");
    }

    @Override
    public void method4() {
        System.out.println("这是第四个方法");
    }
}
//测试程序-ImplTest-javaclass
public class ImplTest {
    public static void main(String[] args) {
        //错误写法,直接创建接口对象
//        MyInterfaceAbstract impl = new MyInterfaceAbstract();

        //正确写法,创建接口的实现类的对象
        MyInterfaceAbstractImpl impl = new MyInterfaceAbstractImpl();
        impl.method1();
        impl.method2();

    }
}

2.接口的默认方法

1. 默认方法:

​ 从Java8 开始,接口里允许定义默认方法,格式:

public defalut 返回值类型 方法名称(参数列表){
    //方法体
}

2. 接口的默认方法的作用

​ 用来解决接口升级的问题:当接口升级,添加了新的抽象方法时,在不改变这个接口之前已经写好的实现类的情况下,升级接口。

​ 而且原有的实现类可以继承添加的默认方法,无需修改原来的代码

3. 实例代码

//接口A:
	public interface MyInterfaceDefault(){
        //抽象方法A
        public abstract void MethodA();
        
        //抽象方法B(升级接口),此时,下面的实现类MyInterfaceDefaultA就会出错,解决方法
//        public abstract void MethodB();
        
        //将上面的抽象方法改成默认方法就可以解决问题,
        public default void MethodB(){
            System.Out.println("这是新添加的默认方法!");
        }
    }
//接口A的实现类-
	public class MyInterfaceDefaultA(){
        @Override
        public abstract void MethodA(){
            System.Out.println("接口的实现类");
        }
    }
//测试程序
	public class Test(){
        public static void main(String[] args){
            MyInterfaceDefaultA a = new MyInterfaceDefaultA();
            a.MethodA();//可以正常调用
            a.MethodB();//接口实现类的对象可以调用接口的默认方法,因为MyInterfaceDefaultA()继承了原来的接口新添加的默认方法
        }
    }

我是小白,如有错误请指正,仅用作自己写笔记,写的不好勿喷。内容学习来自哔哩哔哩
var code = “f88718eb-7d06-4ca9-85f6-c98f2bcb1446”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值