java中接口与抽象类的区别

抽象类:一个包含抽象方法的类为抽象类,抽象类需要用 abstract 修饰,抽象类内部没有构造方法,无法使用它创建对象。抽象类内部的抽象方法只包含声明,没有具体的实现。如果一个普通类继承了抽象类就要重写所有的抽象方法,不然它也是抽象类。抽象方法必须使用 public 或者 protect 修饰,不能使用 private。

接口:接口里面可以含有变量和方法。接口当中的变量会自动使用 public static final 来修饰(要赋初值)。方法会指定为 public abstract 修饰,接口内所有方法都是抽象方法,不能有具体的实现。

抽象类与接口的区别:
1.由于在 Java 中类只能单继承,也就是只能继承一个抽象类,但是一个类可以实现多个 interface。
2.除了包含抽象方法外,抽象类中可以有非 abstract 的成员方法,接口的话只能有静态成员。
3.子类必须实现抽象类的所有抽象方法,不然子类也必须是抽象类,如果是子类实现接口的话,就要把接口的所有方法实现不然会报错。
4.接口中不能有static方法,static方法是类方法,不允许用子类 override,但是抽象类中可以有静态方法。

注:Java语言中类的继承是单继承原因是:当子类重写父类方法的时候,或者隐藏父类的成员变量以及静态方法的时候,JVM使用不同的绑定规则。如果一个类有多个直接的父类,那么会使绑定规则变得更复杂。为了简化软件的体系结构和绑定机制,java语言禁止多继承。接口可以多继承,是因为接口中只有抽象方法,没有静态方法和非常量的属性,只有接口的实现类才会重写接口中方法。因此一个类有多个接口也不会增加JVM的绑定机制和复杂度。

Java语言中类的继承是单继承原因是:当子类重写父类方法的时候,或者隐藏父类的成员变量以及静态方法的时候,JVM使用不同的绑定规则。如果一个类有多个直接的父类,那么会使绑定规则变得更复杂。为了简化软件的体系结构和绑定机制,java语言禁止多继承。接口可以多继承,是因为接口中只有抽象方法,没有静态方法和非常量的属性,只有接口的实现类才会重写接口中方法。因此一个类有多个接口也不会增加JVM的绑定机制和复杂度。
来源链接 :https://www.zhihu.com/question/20149818/answer/142270191

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值