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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李恒权 中级黑马   /  2014-3-8 16:05  /  1376 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李恒权 于 2014-3-9 18:02 编辑

使用抽象类和抽象方法有什么好处?而且抽象类为什么不能被实例化?能举例否?

4 个回复

倒序浏览
抽象方法就必须要写在抽象类当中,抽象类的抽象方法是没有方法体的,我们假设可以进行实例化,是想一下在调用的时候(对象.方法).这个方法没有方法体是不是很尴尬阿.一旦方法被修饰为abstract(抽象方法),那么其子类必须要进行重写该方法,这个跟虚方法不同,如果方法被修饰为virtual(虚方法),那么子类可以重写也可以选择不重写该方法

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
抽象类和接口类似.
接口中只能声明成员, 但不能有定义的代码体.
而抽象类虽然不能实例化, 但不一定要求它的成员一定是抽象的. 它可以有自己的定义的成员和方法, 没有抽象方法也行, 我觉得就是为了满足有些接口不能完成的要求的时候使用的. 如果继承类中都要使用同一种代码体的方法, 就可以在基类中直接定义一个, 省去每个派生类都要再次重写的麻烦.

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1 继续加油

查看全部评分

回复 使用道具 举报
lmm 发表于 2014-3-8 18:00
抽象类和接口类似.
接口中只能声明成员, 但不能有定义的代码体.
而抽象类虽然不能实例化, 但不一定要求它的 ...

“接口中只能声明成员, 但不能有定义的代码体.”那接口又作何用呢?
回复 使用道具 举报
李恒权 发表于 2014-3-9 00:18
“接口中只能声明成员, 但不能有定义的代码体.”那接口又作何用呢?

接口是做规范约束的,因为抽象类是可以找到父类的.接口你是找不到父类,比如:狗和玩具狗他们都有叫的行为但是你可以将他们归属为一个父类吗?那么就可以定义接口让这两个实现类去实现叫的行为就可以了,接口同样是不能有方法体,因为没法实例化
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马