黑马程序员技术交流社区

标题: Interface和Abstract 的区别是什么 [打印本页]

作者: hanxing    时间: 2014-10-26 17:30
标题: Interface和Abstract 的区别是什么
每次需要创一个有共同特点的"类"时不知道是用interface好呢还是用抽象类好呢,还是直接用普通的父类好呢?
能不能简明扼要的说下
作者: 英雄传说ER    时间: 2014-10-26 17:47
看情况 如果这个共同特点的类 有自己的成员变量 和 特有方法 就用普通父类
如果里面需要用到抽象方法就用抽象类
如果里面全是抽象方法就用接口
其实抽象类和普通类基本没区别,抽象只是为了让人不能创建这个类的对象,还有就是有抽象方法,类只能抽象。
作者: hanxing    时间: 2014-10-26 18:00
英雄传说ER 发表于 2014-10-26 17:47
看情况 如果这个共同特点的类 有自己的成员变量 和 特有方法 就用普通父类
如果里面需要用到抽象方法就用抽 ...

那么我什么时候需要用抽象方法呢,如果父类的普通方法被重写不是和抽象方法一样的呀
作者: 英雄传说ER    时间: 2014-10-26 18:23
hanxing 发表于 2014-10-26 18:00
那么我什么时候需要用抽象方法呢,如果父类的普通方法被重写不是和抽象方法一样的呀 ...

什么时候用抽象方法 就是这个父类方法没有任何实体内容 纯粹是为了以后万一出现一个新的子类 表示这类事物都有这个方法,
比如说 动物 包括 人 猫 ,它定义一个eat(){}方法,就可以是抽象的, 表示只要是动物就吃这个功能, 比如以后又出现一个子类 狗 那么狗就一定要有吃这个功能, 因为它属于动物类,类是对一类事物的描述 动物类就描述了只要是动物就有吃这个功能

最能体现这种扩展功能就是接口了(接口可以看成是一个特殊的父类),它自己本身没有任何实体意义,它的存在纯粹是为了表示以后出现的事物 只要是这个属于这个接口(类)的,就一定有里面的这些个方法,不然就不属于这个类,   比如出现了一个新的事物,镜子 你如果把它归为动物类 就一定要在类中定义吃这个功能,不然它就不能成为动物类的子类
作者: hanxing    时间: 2014-10-26 18:48
英雄传说ER 发表于 2014-10-26 18:23
什么时候用抽象方法 就是这个父类方法没有任何实体内容 纯粹是为了以后万一出现一个新的子类 表示这类事 ...

讲的很到位,太感谢了
作者: java_student    时间: 2014-10-28 12:14
interface可以看作一个特殊的类。而抽象类是只该类中包含抽象方法,但是抽象类中也可以包含一般的方法。
作者: java_student    时间: 2014-10-28 12:15
interface可以看作一个特殊的类。而抽象类是只该类中包含抽象方法,但是抽象类中也可以包含一般的方法。
内部思想本身就不同
作者: 含着泪微笑    时间: 2014-10-28 12:29
interface是一个特殊的抽象类
作者: javaAndroid    时间: 2014-10-28 12:33
抽象类是对一类事物的抽象,描述的是该类事物基本的行为特征。
而接口则是对对象能力的扩展。事物本身并不具有该能力,是对事物能力的扩展。
作者: dong53821713    时间: 2014-10-28 15:16
interface是接口:
1、他内部的方法必须是abstract修饰,不能有方法体,默认public修饰
2、接口定义的变量都是全局常量,默认public static final 修饰
3、没有构造方法
4、实现他的类必须重写他的全部方法,如果只重写了他的部分方法,那么这个类就是abstract的类,
abstract是抽象类:
1、可以有abstract修饰的抽象方法,方法不写修饰符就是默认权限,也可以有一般方法,
2、抽象类中的变量默认是普通变量 ,没有publi static final 修饰
3、有抽象方法
作者: swon13    时间: 2014-10-28 15:19
一个继承,一个是实现~
作者: hanxing    时间: 2014-10-28 15:58
dong53821713 发表于 2014-10-28 15:16
interface是接口:
1、他内部的方法必须是abstract修饰,不能有方法体,默认public修饰
2、接口定义的变量 ...

很详细,很给力




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2