抽象类与接口的联系

1. 抽象类和接口的区别

  • 类可以实现无限个接口,但只能从一个抽象类继承。
  • 抽象类中可以存在并实现非抽象方法,但接口里面的方法只能是public且没有实现的。
  • 抽象类的成员变量可以被不同的修饰符来修饰,但接口的成员变量只能是静态常量(static final)。
  • 抽象类是对象的抽象,接口是一种行为规范。


2. 抽象类和接口的使用注意事项

  • 在继承抽象类时,必须要实现抽象类中所有的抽象方法,且实现的方法必须与抽象方法签名完全一致,这和接口一致。
  • 抽象类的非抽象方法具有实际功能时,子类可以不必重写该方法,可以直接引用。当然根据继承的概念也可以重写该方法。
  • 而实现(implement)一个接口时,必须要实现接口中所定义的所有方法,不可缺漏一个。
  • 在实现接口时,我们也常写一个抽象类,来实现(implement)接口中的某些子类所需的通用方法,接着在编写各个子类时,即可继承该抽象类来使用,省去在每个都要实现通用的方法的困扰。


3. 接口的default`方法(JDK>=1.8)

在接口中,可以定义default方法。

interface Person {
    String getName();
    default void run() {
        System.out.println(getName() + " run");
    }
}

default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类

如果新增的是default方法,那么子类就不必全部修改,只需在需要重写的地方去重写新增的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值