当前位置: 技术问答>java相关
深入探讨java的接口和抽象的内涵!(续上贴,上贴分已给)
来源: 互联网 发布时间:2015-02-04
本文导语: 请大家继续! 越讨论越明了! 是不是? | 这个问题其实主要谈的是对面向对象的理解.和java关系不很紧. 班门弄斧一次:接口是一种抽象,提取出一部分对象的共性. 譬如我可以定义一个 Flyable...
请大家继续!
越讨论越明了!
是不是?
越讨论越明了!
是不是?
|
这个问题其实主要谈的是对面向对象的理解.和java关系不很紧.
班门弄斧一次:接口是一种抽象,提取出一部分对象的共性.
譬如我可以定义一个 Flyable 的接口.描绘一种"可以飞"的特性,在这个接口中定义fly这个动作.
然后我定义三个类:Bear,Eagle,Cat.显而易见,Eagle应实现这个接口.
班门弄斧一次:接口是一种抽象,提取出一部分对象的共性.
譬如我可以定义一个 Flyable 的接口.描绘一种"可以飞"的特性,在这个接口中定义fly这个动作.
然后我定义三个类:Bear,Eagle,Cat.显而易见,Eagle应实现这个接口.
|
同意vampirelord(),对于接口来说主要是为了使“不会飞”的东西也具有“可以飞”的能力,于是这样的东西就要实现接口(Flyable)。比如要让原本不具有“飞”的东西具有飞的能力,比如给Bear插上翅膀和推进器,那它就具有飞起来的能力了。
另外一个例子就是人类的飞行器——因为一个金属筒原本不会飞的。在加上可以飞的观念的同时在飞行器上加上Flayable的函数实现体——也就是发动机、翅膀、流体力学的应用等。
接口 抽象的区别:
接口和抽象都没有函数体(仅有声明),因为没有办法确定所要实现的实例究竟以什么方式“飞”。
对于抽象:可以想象抽象类下边的类都具有的能力(但不知道具体的实现过程)一般是用接口来实现,比如对“会飞的生物类”来说,对于继承它的子类肯定可以飞,但它们飞的时候肯定又不一样,是千姿百态的就没有办法确定“飞”的函数体,就如老鹰(Eagle)和蝴蝶(Butterfly)。它们需要在自己的类中添加“飞”的函数体。
而对于交通工具,“飞”并不是必须实现的一个功能,所以引入“可以飞”(Flyable)这样一个接口就可以了,但“飞”的函数体还是得自己实现。
另外一个例子就是人类的飞行器——因为一个金属筒原本不会飞的。在加上可以飞的观念的同时在飞行器上加上Flayable的函数实现体——也就是发动机、翅膀、流体力学的应用等。
接口 抽象的区别:
接口和抽象都没有函数体(仅有声明),因为没有办法确定所要实现的实例究竟以什么方式“飞”。
对于抽象:可以想象抽象类下边的类都具有的能力(但不知道具体的实现过程)一般是用接口来实现,比如对“会飞的生物类”来说,对于继承它的子类肯定可以飞,但它们飞的时候肯定又不一样,是千姿百态的就没有办法确定“飞”的函数体,就如老鹰(Eagle)和蝴蝶(Butterfly)。它们需要在自己的类中添加“飞”的函数体。
而对于交通工具,“飞”并不是必须实现的一个功能,所以引入“可以飞”(Flyable)这样一个接口就可以了,但“飞”的函数体还是得自己实现。
|
a class implements a interface is saying that: "i can do everything wrote in this interface, use me if you want these methods to be done"
if a class exneds a abstract class, it is saying that: "i have all things in this class",but not meaning you can trust it to do what the base class can do
if a class exneds a abstract class, it is saying that: "i have all things in this class",but not meaning you can trust it to do what the base class can do