Java抽象和接口

抽象:

如果一个class定义了方法,但没有具体执行代码,这个方法就是抽象方法:

  • 抽象方法用abstract修饰
  • 抽象方法没有任何执行语句
  • 因为无法执行抽象方法,因此这个类也必须申明为抽象类(abstract class)
  • 无法实例化一个抽象类
    • 抽象类用于被继承
    • 抽象类可以强迫子类实现其定义的抽象方法(否则编译错误)
    • 抽象方法实际上相当于定义了“规范”
  • 面向抽象编程的本质:
    • 上层代码只定义规范(abstract class Person)
    • 不需要子类就可以实现业务逻辑(正常编译)
    • 具体的业务逻辑由不同的子类实现,调用者并不关心
  • 抽象方法定义了子类必须实现的接口规范
  • 从抽象类继承的子类必须实现抽象方法


接口:
如果一个抽象类没有字段,所有方法全部是抽象方法,就可以把该抽象类改写为接口(interface)
  • 使用interface声明一个接口
  • 接口定义的方法默认是public abstract(不需要写)
 
public interface Person {
    void run();
}
interface是Java内置的纯抽象接口
  • implements实现接口interface
  • 可以实现多个interface  多接口

注意区分术语:
  • Java的接口特指interface定义的接口,只定义方法签名
  • 编程接口泛指接口规范,如方法签名,数据格式,网络协议等

  • 一个interface可以继承自另一个interface
  • interface继承自另一个interface使用extends
  • 相当于扩展了接口的方法



  • 接口定义了纯抽象规范
  • 类可以实现多个接口
  • 接口也是数据类型,适用于向上转型和向下转型
  • 接口不能定义实例字段
  • 接口可以定义default方法
    • 定义default方法可以使子类不实现该方法。子类也可以覆写该方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值