接口类、抽象类和普通类的区别

设计层面:抽象类是多个子类公共特征的抽象,可以想象成基因图谱。比如猴子的子类有金丝猴、长尾猴等。抽象类是子类的模板。这样做有助于代码复用。所以抽象类只支持单继承。接口类是行为的抽象,这种行为可以跨物种。比如麻雀、蝴蝶、风筝都能实现“飞:这个行为。所以可以理解接口是支持多重继承的,也是实现多态的基础,所以它的方法是抽象的,不需要实现。

接口抽象类普通类
变量public static final
方法public,abstract,不能实现不能是private不支持抽象方法
静态代码块/方法
实例化
多重继承支持

Java8增加了函数式编程的支持,所以增加了functional inteface,它是只有一个抽象方法的接口,用@FunctionalInterfaceAnnotation来标记。Runnable、Callable之类,都是functional interface。
另外,Java8后,interface增加了对default method的支持。

接口里的方法不一定非要写上public abstract,在编译之后生成 class 文件时,会自动加上。

//编译前
public interface AAA {  
	void aaa();  
}  
//编译后
public abstract interface AAA  {  
	public abstract void aaa();  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值