JavaSE16-面向对象-接口

一、概念

接口就是规范\规则,我们可以使用接口来定义一些规则
(比如要求某个方法的方法名必须叫什么,方法的参数列表必须是什么,方法的返回值类型必须是什么)

二、格式

1.使用interface来定义接口

public interface 接口名{
    //定义抽象方法。public abstract被省略了
    void method();
}

2.implements实现接口

果要实现多个接口,多个接口名用逗号分开。我们在理解的时候可以把接口理解成是一个特殊的父类。

public class 类名 implements 接口名{}

三、接口中的成员

1.常用成员

jdk7版本中接口中只能有常量和抽象方法

  • 接口中定义不了成员变量,定义的成员变量默认都会修饰为:public static final
  • 定义的方法默认修饰符为public abstract**
public interface InterfaceA {
    //常量
    int NUM =10;//等价于public static final int NUM =10;
    //抽象方法
    void method();//等价于  public abstract void method();
}

2.新增成员(不重要)

默认方法、静态方法、私有方法

2.1 默认方法

  1. 在jdk8中允许我们在接口中定义默认方法。默认方法允许有方法体。
  2. 默认方法可以选择不进行重写。也可以重写,看需要。
  3. 注意事项:如果两个接口中有相同的默认方法。一个类同时实现了这两个接口,必须要重写该方法。
  4. 应用场景:如果在接口升级的时候某些方法并不想让所有的实现类进行重写,可以使用默认方法来定义。
public interface InterfaceA {
    //默认方法:使用defaut关键字进行修饰。
    default void method(){

    }
}

2.2 静态方法

  1. 在jdk8中允许我们在接口中定义静态方法。静态方法允许有方法体。
  2. 静态方法不能被重写。
  3. 应用场景:如果在接口升级的时候需要给接口增加一些工具方法。不想让实现类去重写该方法,可以使用静态方法来定义。
public interface InterfaceA {
    //静态方法:使用static关键字进行修饰。
    static void staticMethod(){

    }
}

public class Demo {
    public static void main(String[] args) {
        //使用接口名.方法名(参数)  来调用
        InterfaceA.staticMethod();
    }
}

2.3 私有方法

  1. 在jdk9中允许我们在接口中定义私有方法。私有方法允许有方法体。
  2. 私有方法不可以被重写
  3. 应用场景:对默认方法或者是静态方法中重复的代码进行抽取,提高代码复用度。
public interface InterfaceA {
// 使用private修饰
//加上static的原因:静态方法只能调用静态方法,如果是静态方法调用就要在此方法中加上static
    private static void privateStaticMethod(){

    }
    private  void privateMethod(){

    }
}

四、继承关系 & 实现关系

  • 在java中一个类可以实现多个接口
 public class Person implements InterfaceA,InterfaceB{}
  • 在java中接口和接口之间可以有继承关系。继承之后实现类会把父接口的成员继承下来。
public interface InterfaceC  extends InterfaceA{

}

五、抽象类和接口的使用区别

  1. 接口中的基本都是抽象的,而在抽象类中可以有一部分是非抽象方法。而非抽象类中是不可以有抽象方法的。
  2. 接口是最抽象的,其次是抽象类,最后是非抽象类。​
  3. 所以我们最顶层设计成接口,然后实现类设计成抽象类(实现部分抽象方法),抽象类的子类可以设计成非抽象类(对剩下的所有抽象方法进行实现)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值