A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hanxing 中级黑马   /  2014-10-26 17:30  /  1428 人查看  /  11 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

每次需要创一个有共同特点的"类"时不知道是用interface好呢还是用抽象类好呢,还是直接用普通的父类好呢?
能不能简明扼要的说下

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

11 个回复

倒序浏览
看情况 如果这个共同特点的类 有自己的成员变量 和 特有方法 就用普通父类
如果里面需要用到抽象方法就用抽象类
如果里面全是抽象方法就用接口
其实抽象类和普通类基本没区别,抽象只是为了让人不能创建这个类的对象,还有就是有抽象方法,类只能抽象。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报
英雄传说ER 发表于 2014-10-26 17:47
看情况 如果这个共同特点的类 有自己的成员变量 和 特有方法 就用普通父类
如果里面需要用到抽象方法就用抽 ...

那么我什么时候需要用抽象方法呢,如果父类的普通方法被重写不是和抽象方法一样的呀
回复 使用道具 举报
hanxing 发表于 2014-10-26 18:00
那么我什么时候需要用抽象方法呢,如果父类的普通方法被重写不是和抽象方法一样的呀 ...

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

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

讲的很到位,太感谢了
回复 使用道具 举报
interface可以看作一个特殊的类。而抽象类是只该类中包含抽象方法,但是抽象类中也可以包含一般的方法。
回复 使用道具 举报
interface可以看作一个特殊的类。而抽象类是只该类中包含抽象方法,但是抽象类中也可以包含一般的方法。
内部思想本身就不同
回复 使用道具 举报
interface是一个特殊的抽象类
回复 使用道具 举报
抽象类是对一类事物的抽象,描述的是该类事物基本的行为特征。
而接口则是对对象能力的扩展。事物本身并不具有该能力,是对事物能力的扩展。
回复 使用道具 举报
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:14
11#
一个继承,一个是实现~
回复 使用道具 举报
dong53821713 发表于 2014-10-28 15:16
interface是接口:
1、他内部的方法必须是abstract修饰,不能有方法体,默认public修饰
2、接口定义的变量 ...

很详细,很给力
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马