抽象类与接口

存在意义

    抽象类与接口只能被当作superclass继承。subclass必须实现抽象类或接口中的所有抽象方法,否则subclass也必须被定义为抽象类或接口。因此,抽象类和接口无法被实例化。因此,抽象类和接口更像一个行为规范,在维护subclass时因为superclass的约束(subclass必须实现superclass的所有abstract class),维护者不能随意删除subclass中的方法。

    抽象类:abstract        extend

    接口:interface    implement

    抽象类和接口都必须是public或protected。如果是private,则不能被继承,那么抽象类和接口的定义代码就是无用代码。

限制

 接口

  • 接口中只能包含抽象方法,没有被实现的方法
  • 接口没有构造方法
  • 接口中的变量必须被public static final修饰,为什么需要static和final?
    • static规定该变量的所有更改都在一个地址下,因此可以做到所有subclass继承的是同一个地址中的同一个数。
    • 同时,static variable可以被类调用,所以当C继承interfaceA和interfaceB时,可以用A.n 或者B.n来区分两个interface中的n
    • final将地址中的内容锁死,因此无法被interface的subclass更改。
  • 接口的修饰符为public static
  • 接口可以被多重继承 eg. public class A implement interfaceA, interfaceB{....}
  • jdk1.8后接口可以有非抽象方法

 抽象类

  • 抽象类可以实现方法
  • 抽象类可以有构造方法
  • 抽象类只能单/多继承,不能多重继承。多继承就是C继承B,B继承A,因此C也继承了A。多重继承就是C同时继承B和A。(看javaTips文件夹中java继承区别)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值