Java学习——接口

一、为什么

解决单继承问题,一个子类只能继承一个父类,但可能存在多个子类重用多个不同的方法。为此,利用接口实现方法重用。

二、怎么做

接口

  1. 需要接入接口的方法,必须加default关键词
  2. default方法只能是public,public可省略
    如以下代码,定义Duck类实现Swim和Fly方法的重用
点击查看代码
public class Inter {
    public static void main(String[] args) {
        Duck duck = new Duck();
        duck.fly();
        duck.swim();
    }
}

interface Swim{
    default void swim() {
        System.out.println("can swim");
    }
}

interface Fly{
    default void fly(){
        System.out.println("can fly");
    }
}
*注意事项* 1. 一个java文件中可以有多个接口和类,但是只有一个能被定义为public 2. public标识的类必须和java文件名相同

三、多态

多态除了用在父子类之间,也可用在实现类和接口类之间。即可实现使用接口类代表实现类
条件如下:

  1. 用接口类型来代表实现类对象
  2. 实现类中必须发生方法重写

定义接口E、实现类F和G,在接口中定义方法e(),类F和F对e方法重写

  1. 用E类型来代表F和G对象
点击查看代码
E[] array = new E[] {
        new F(),
        new G()
};
  1. 在接口中定义方法e(),类F和F对e方法重写
    !注意:多态中,子类或实现类中方法修饰符>=父类或接口类中方法修饰符,public > protected > 不写 > private,接口类中default默认的是public
点击查看代码
interface E{
    default void e(){
    }
}

class F implements E{
    @Override
    public void e(){
        System.out.println("f");
    }
}

class G implements E{
    @Override
    public  void e(){
        System.out.println("g");
    }
}

三、多态-抽象方法

  1. 语法:抽象方法 只有方法声明,没有方法体(花括号)
    语法格式:public abstract void method_name(),public和abstract可省略
  2. 为什么要抽象方法
    因为实现类会重写方法,因此可以不写方法体。一旦使用抽象方法,则实现类中必须重写方法。
  3. 抽象方法和默认方法
    默认方法用于实现类中不重写,此时会默认使用接口类中定义的默认方法。抽象方法则实现实现类中的方法。
    interface E{ public abstract void e() }

四、封装

通过接口可以封装内部细节,接口智能调用重写的实现类方法,而无法调用实现类中的未重写方法及属性。

posted @ 2022-09-12 17:10  风一样的我1  阅读(35)  评论(0)    收藏  举报