抽象类和接口

本文详细解释了抽象类和接口的概念及其应用场景。介绍了抽象类如何防止类被实例化并实现多态,以及接口如何解决多重继承的问题。同时,对比了抽象类与接口之间的主要区别。

1.抽象类

      有如下的类结构,创建Dog对象和Cat对象是很合理的,但是Animal对象无法实例化,我们要有Animal这个类来继承和产生多态,但要限制只有它的子类才能被初始化。抽象类可以用来防止类被初始化。


  • 类即使不含有抽象方法,也可以将类声明为抽象类
  • 如果类中有方法是抽象方法,那么这个类必须被定义为抽象类
  • 抽象类在使用过程中不能被实例化
  • 抽象类中的抽象方法要么在子类中实现,要么在子类中继续被定义为抽象方法
  • 抽象类的对象变量可以引用非抽象子类对象(抽象子类也无法实例化,所以也不可能指向抽象子类对象)

2.接口
     多重继承:A继承了B和C,B和C中有一个同名称的方法void run(),现在A调用这个方法就无法判断到底运行B中还是C中run的方法。接口就是用来解决多重继承的问题。接口解决将全部的方法设为抽象的,这样就会在子类中实现此方法,因此就在执行期间就不会搞不清楚要用哪一个继承版本。
  • 接口中的所有的方法都带有public和abstract的意义,只能被这两个关键字修饰
  • 接口的成员变量默认是public static final,并且必须给其赋初值
  • 接口的方法一定是抽象的,所以必须要以分号结束
  • 接口强调特定功能的实现,其设计理念是"has - a"关系,继承强调所属关系,其设计理念是"is - a"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值