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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liangdmaster 中级黑马   /  2014-7-8 21:28  /  2724 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 liangdmaster 于 2014-7-13 23:50 编辑

感觉越学越糊涂了,什么情况下用虚方法什么情况下用抽象类呢?感觉差不多。

评分

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

查看全部评分

20 个回复

倒序浏览
例如:你可以定义一个抽象door类,门有close和open的方法。也定义到这个抽象类里。抽象类着重继承关系。如果两个东西可以看成继承关系,用抽象类。   用的多了,自然就熟了

评分

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

查看全部评分

回复 使用道具 举报
抽象类是一种规范,抽象类是被继承的。首先,如果你不继承的话,抽象类完全没有存在的意义;其次,抽象方法是没有方法体的,也就是说抽象类无法实例化(如果能够实例化,怎么调用没有方法体的抽象方法)。所以只能通过子类继承来重写父类的抽象方法,从而实现多态。
虚方法有方法体,当这个方法所在的类有必要实现这个方法的时候,而这个类的派生类对这个方法有不同的表现形式的时候,可以用虚方法实现多态。

评分

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

查看全部评分

回复 使用道具 举报
基类里实现共性部分、各子类实现个性部分时可以用虚方法。
完全不同的行为就用抽象方法。
比如狮子和豹子的捕猎行为,就可以用虚方法。因为有共同的部分,比如狮子和豹子都是潜伏,再冲刺。但是狮子咬脖子,豹子咬肚子。。
狮子和豹子的叫声,就用抽象方法。因为完全不同。

评分

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

查看全部评分

回复 使用道具 举报
你自己先列个表,2个做下比较就,这样理解更深刻些,我以前就是这样学的,只不过那张纸找不到了

评分

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

查看全部评分

回复 使用道具 举报
虚方法只能用在非抽象类中吗?
抽象方法只能存在于抽象类中?
回复 使用道具 举报
如果你的父类不需要被实例化,那么你就可以将其设置成抽象类,就好比一种抽象的东西。虚拟的就是和其相对应的了。

评分

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

查看全部评分

回复 使用道具 举报
_xixi_ 发表于 2014-7-8 21:53
抽象类是一种规范,抽象类是被继承的。首先,如果你不继承的话,抽象类完全没有存在的意义;其次,抽象方法 ...

谢谢,这么描述我懂了很多
回复 使用道具 举报
当有人回复后,请及时把帖子编辑为提问结束,这样版主才给你加分
回复 使用道具 举报
czwanglei 发表于 2014-7-11 21:31
当有人回复后,请及时把帖子编辑为提问结束,这样版主才给你加分

老师啊,我都找了好几天了,这个“提问结束”到底在哪儿呢?
回复 使用道具 举报
FrancisTan 发表于 2014-7-9 08:23
虚方法只能用在非抽象类中吗?
抽象方法只能存在于抽象类中?

第二个问题我知道{:2_30:}:当一个类中有抽象方法时这个类就必须加abstract,也就是说抽象方法只能存在于抽象类中。
回复 使用道具 举报
liangdmaster 发表于 2014-7-12 20:17
老师啊,我都找了好几天了,这个“提问结束”到底在哪儿呢?

你去找你发的帖子下面有个编辑,点开在那里可以看到的
回复 使用道具 举报
czwanglei 发表于 2014-7-13 22:48
你去找你发的帖子下面有个编辑,点开在那里可以看到的

哦,找到了,谢谢老师。
回复 使用道具 举报
liangdmaster 发表于 2014-7-13 23:52
哦,找到了,谢谢老师。

没事的,有什么事,随时联系我
回复 使用道具 举报
一十二。 来自手机 中级黑马 2014-7-14 17:41:54
15#
学到了,其实我也不是很会,话说虚方法是什么
回复 使用道具 举报
czwanglei 发表于 2014-7-14 17:28
没事的,有什么事,随时联系我

老师我还真有个问题想问您,我想报十五期的黑马班,是先交学费的,那还用赞够技术分再面试吗?还是直接能面试了?打听过传智这边,各种说法不一。
回复 使用道具 举报
一十二。 发表于 2014-7-14 17:41
学到了,其实我也不是很会,话说虚方法是什么

想学习虚方法最好和抽象类一块儿对比的学,这样能够体会的深刻一点。看视频吧,这样学的系统一点。
回复 使用道具 举报
liangdmaster 发表于 2014-7-14 22:22
老师我还真有个问题想问您,我想报十五期的黑马班,是先交学费的,那还用赞够技术分再面试吗?还是直接能 ...

你这个问题要找.net负责老师,蔡老师QQ2355535407
回复 使用道具 举报
如果要实现多态,能使用抽象类的就使用抽象类
抽象类,除了不能实例化,和类,几乎没差别
你可以把,抽象类中的抽象方法,想成是 虚方法的 进阶版,
子类,继承父类中的虚方法,子类可以不用重写
但是
如果父类是抽象类,抽象类有抽象方法,
那么,子类就必须重写,抽象方法

回复 使用道具 举报
FrancisTan 发表于 2014-7-9 08:23
虚方法只能用在非抽象类中吗?
抽象方法只能存在于抽象类中?

虚方法可以存在于任何类中
抽象方法只能存在于抽象类中
回复 使用道具 举报 1 0
12下一页
您需要登录后才可以回帖 登录 | 加入黑马