首页新闻找找看学习计划

抽象类比普通类有什么优势?

0
悬赏园豆:50 [已解决问题] 解决于 2013-04-08 10:51

感觉抽象类也可以用普通类来代替,为什么要用抽象类呢?谁能帮我来解答一下,不甚感激。

滴水穿石De的主页 滴水穿石De | 初学一级 | 园豆:157
提问于:2013-03-29 13:45
< >
分享
最佳答案
1

抽象类的抽象方法,子类必须实现。比如父类有的方法在设计时,并不知道该怎么写,而要留给子类去实现,但又必须实现。这样的强制性是普通类所不具备的。如:模板方法模式http://www.blogjava.net/wintys/archive/2009/06/15/pattern_template_method.html

收获园豆:25
wintys | 菜鸟二级 |园豆:229 | 2013-03-29 14:02
其他回答(9)
0

抽象类一般是基类,规定继承类有什么特性,要实现什么东西

圆 豆 | 园豆:112 (初学一级) | 2013-03-29 14:07
0

看一下设计模式就知道有什么优势了。

BattleHeart | 园豆:211 (菜鸟二级) | 2013-03-29 14:28
0
luofer | 园豆:468 (菜鸟二级) | 2013-03-29 15:27
0

一楼正解,抽象类和接口中不用实现方法,只是声明方法,好比灯泡的底座,没有灯泡但能够安装任意形状的灯泡(只要灯泡实现一个统一的接口),如果没有底座(抽象类或接口),那么所有的灯泡都要设计自己和电源连接的方式了。

会长 | 园豆:6043 (大侠五级) | 2013-03-29 15:47

确实可以用普通类来代替,但是普通类里的方法都要在子类中重新,这样的话,父类里的方法实现其实是没意义的。

支持(0) 反对(0) 会长 | 园豆:6043 (大侠五级) | 2013-03-29 15:49
1

使用抽象类或接口,扩展性要好。不然,后期维护很麻烦,使用了抽象类或接口,只需要在子类中重写就行。

收获园豆:25
Verms | 园豆:286 (菜鸟二级) | 2013-03-29 19:32
0

抽象类与普通类的区别较大,因为抽象类的某些成员可以不实现,留给派生类来实现。

抽象类和接口在很多时候很像,区别在于接口可以实现多个,但如果采用抽象类,则只能继承一个

陈希章 | 园豆:2338 (老鸟四级) | 2013-03-30 07:50
0

1.约束定义, 比如某个方法 是抽象方法,子类必须要实现

2.基类公共包装,比如,封装一个公共的Page基类,把某些公共方提出来,方法里全是 虚方法,都有自己的方法实现,但是这个是类是一个抽象,不能实例化,只能由子类来实例化,子类可以重写基类方法,也可以直接用基类方法。

 

上面两点有一个公共的特点,就是基类一般不能示例化,用途不一样,一种是子类必须实现,一种是基类实现了,子类可以改写。

Qlin | 园豆:2403 (老鸟四级) | 2013-03-30 09:24
0

完全是设计上的约束,普通类都可以通过new,生成具体的对象,抽象类不可以。

比如你女朋友给你说,给我买点吃的东西,你不可能屁颠屁颠就跑出去吧,你丫必须告诉我具体吃的东西是什么。

吃得东西是虚基,其他鸡腿,蛋糕都是它的子类。那吃得东西必须能吃,就起这个约束,以区别用的。你女朋友让你去买吃的,你就不能中途买个用的TT回来,那不和规矩,没看老娘那个来了么?

arg | 园豆:1047 (小虾三级) | 2013-03-30 20:22
0

多态。这个是面向对象的一个重要的特性。

举个例子

人 吃饭。细分为男人吃饭 女人吃饭 小孩吃饭 人妖吃饭。

抽象为人吃饭之后,就不需要管什么种类的人吃饭。

而单独的类 比如就是男人吃饭,于是就不存在也面向对象的多态特性。

````` | 园豆:14268 (专家六级) | 2013-03-31 21:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册