Java学习——接口
一、为什么
解决单继承问题,一个子类只能继承一个父类,但可能存在多个子类重用多个不同的方法。为此,利用接口实现方法重用。
二、怎么做

- 需要接入接口的方法,必须加default关键词
- 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");
}
}
三、多态
多态除了用在父子类之间,也可用在实现类和接口类之间。即可实现使用接口类代表实现类
条件如下:
- 用接口类型来代表实现类对象
- 实现类中必须发生方法重写
定义接口E、实现类F和G,在接口中定义方法e(),类F和F对e方法重写
- 用E类型来代表F和G对象
点击查看代码
E[] array = new E[] {
new F(),
new G()
};
- 在接口中定义方法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");
}
}
三、多态-抽象方法
- 语法:抽象方法 只有方法声明,没有方法体(花括号)
语法格式:public abstract void method_name(),public和abstract可省略 - 为什么要抽象方法
因为实现类会重写方法,因此可以不写方法体。一旦使用抽象方法,则实现类中必须重写方法。 - 抽象方法和默认方法
默认方法用于实现类中不重写,此时会默认使用接口类中定义的默认方法。抽象方法则实现实现类中的方法。
interface E{ public abstract void e() }
四、封装
通过接口可以封装内部细节,接口智能调用重写的实现类方法,而无法调用实现类中的未重写方法及属性。

浙公网安备 33010602011771号