Java基础概念 | 抽象类与接口

抽象类与接口

定义

抽象类:包含抽象方法的类。

  1. 包含抽象方法的类必须通过abstract关键字声明为抽象类,否则编译器会报错。
  2. 抽象方法需要通过abstract关键字进行声明。
  3. 抽象类可以不包含抽象方法。
  4. 抽象类不可以被实例化,即使它不包含抽象方法。
  5. 任何继承了抽象类的类必须override抽象基类中的抽象方法。如果不override抽象基类中的抽象方法,则需要将该类申明为抽象类。

接口:完全抽象的类(不包含任何具体实现的方法)

  1. 接口中的域隐式地是staticfinal的。
  2. 接口中的方法只能是public权限,这些方法在其实现类中必须显式申明为public权限,否则会报 'attempting to assign weaker access privileges ('package-private'); was 'public'编译错误。
  3. 任何继承了接口的类必须override接口中的方法,否则需要将类申明为抽象类。

总结

  1. 抽象类和接口的本质都是为了抽象化,而抽象化的本质是为了复用。将做什么怎么做分离开来,通过多态这个机制来实现 同一个接口(做什么)执行不同的方法体(怎么做)。
  2. 抽象类可以包含有具体方法体的方法;接口只能有不包含定义的方法(在JDK8以后interface引入了default method这一feature从而实现了接口中也可以包含有具体方法体的方法)。

用法

extend:扩展。扩展是指同类扩展。extend关键字后可以跟接口/抽象类/类。接口可以extend接口,抽象类/类可以extend抽象类/类。
implement:实现。实现是指实现接口中的方法。implement关键字后只能跟随接口。接口不可以implement接口,抽象类/类可以implement接口。

  1. 接口 extend 接口 :interface 接口名 extends 接口名1, 接口名2
  2. 抽象类/类 extend 抽象类/类
  3. 通过单一extend和多implement实现多继承class 类名 extends 类名 implements 接口名1, 接口名2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值