浅谈Java中的抽象类与接口

        在谈到抽象类和接口前,我们先来讨论普通的类。我们知道普通的类实现为对象,因此,类为具体对象的一种抽象形式。而抽象类则是对类的抽象。例如,我们家门口的树是一个非常具体的对象,而树则是对这种具体对象的抽象化,从而对这类事物的特质进行描述。而植物则是对树这一类的再次抽象,抽象程度更高,也是对更多类的概括。在定义植物这一抽象类后,我么们便可以用一些共同的方法来描述花、树这些相对于植物相对具体的类。因此,抽象类是通过对事物的抽象化找出其共同的特质,从而能够用一种共同的方式描述它们。

        接口有着与抽象类非常多相同的特点,但我们又不能简单地将接口视作抽象类,java设计者在创造接口这一类型时,一定刻意强化了它的特性与抽象类做出区分。其中一个显著的特征便是接口没有构造函数,这是与抽象类一个非常大的区分。也就是说接口只有方法而没有数据域。由此,我们可以认为抽象类是对类的一种抽象而接口是对纯粹对行为、方法、某一属性的一种概括。例如我们有鸟与飞机两类事物,从感官上,这两类事物仿佛并没有存在相当直接的父子、继承关系,因此,要用同一父类来刻画它们相同的特质看起来是比较困难的,这是接口便显示了它的优势与直观性。鸟与飞机有一种共同特质便是都能在空中飞行,由此,我们可以定义一种“飞”接口来描述一特质如返回某一事物是否能够在空中飞行、飞行速度如何、飞行姿态怎样。从中我们可以得出接口可以对某种特质进行刻画描述,而不调用接口的类不必强调类的父子、继承关系,这便是接口的优势所在。

        以下是java对接口的类型一些具体要求与抽象类的一些对比。(引用自Java语言程序设计与数据结构 基础篇(梁勇著)):

        

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值