黑马程序员技术交流社区

标题: 抽象类和抽象方法之问? [打印本页]

作者: 李恒权    时间: 2014-3-8 16:05
标题: 抽象类和抽象方法之问?
本帖最后由 李恒权 于 2014-3-9 18:02 编辑

使用抽象类和抽象方法有什么好处?而且抽象类为什么不能被实例化?能举例否?
作者: Darkhorse′Xa    时间: 2014-3-8 16:12
抽象方法就必须要写在抽象类当中,抽象类的抽象方法是没有方法体的,我们假设可以进行实例化,是想一下在调用的时候(对象.方法).这个方法没有方法体是不是很尴尬阿.一旦方法被修饰为abstract(抽象方法),那么其子类必须要进行重写该方法,这个跟虚方法不同,如果方法被修饰为virtual(虚方法),那么子类可以重写也可以选择不重写该方法
作者: lmm    时间: 2014-3-8 18:00
抽象类和接口类似.
接口中只能声明成员, 但不能有定义的代码体.
而抽象类虽然不能实例化, 但不一定要求它的成员一定是抽象的. 它可以有自己的定义的成员和方法, 没有抽象方法也行, 我觉得就是为了满足有些接口不能完成的要求的时候使用的. 如果继承类中都要使用同一种代码体的方法, 就可以在基类中直接定义一个, 省去每个派生类都要再次重写的麻烦.
作者: 李恒权    时间: 2014-3-9 00:18
lmm 发表于 2014-3-8 18:00
抽象类和接口类似.
接口中只能声明成员, 但不能有定义的代码体.
而抽象类虽然不能实例化, 但不一定要求它的 ...

“接口中只能声明成员, 但不能有定义的代码体.”那接口又作何用呢?
作者: Darkhorse′Xa    时间: 2014-3-9 11:16
李恒权 发表于 2014-3-9 00:18
“接口中只能声明成员, 但不能有定义的代码体.”那接口又作何用呢?

接口是做规范约束的,因为抽象类是可以找到父类的.接口你是找不到父类,比如:狗和玩具狗他们都有叫的行为但是你可以将他们归属为一个父类吗?那么就可以定义接口让这两个实现类去实现叫的行为就可以了,接口同样是不能有方法体,因为没法实例化




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