抽象类与普通类有什么不同?

CTBOK 2009-11-23 10:59:31
抽象类能extends,普通类也能extend

无论是抽象还是普通类,子类都能继承父类所有的代码,那么,我是否能认为,抽象类与普通类的区别,是象征性意义大于实际意义?

THANKS
...全文
330 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
晓虫 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

我自己的想法是:抽象类是SA或架构师之类的人用的,设计好一些基础的代码,让程序员沿着这条路走,这也是抽象类不能实例化的原因之一。至于接口,很明显了,是架构师用的,目的是制定编程规则。

我见过有一句较经典的话:接口偏重于设计重用,而抽象类偏重于代码重用
[/Quote]
我觉得这位说的有点道理,关于普通类与抽象类的区别,还是应该从他们的应用角度与设计目的理解
youjianbo_han_87 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 forsiny 的回复:]
引用 3 楼 youjianbo_han_87 的回复:

我认为之所以有抽象类、接口这种东西,也是从概念上起源的。也就是楼主所谓之象征意义。
[/Quote]

就是为了根据 java 语法而实现的一些设计模式呀。没什么很神秘的,呵呵
mengshuijin 2009-11-24
  • 打赏
  • 举报
回复
Java专门提供了一种机制,名为“抽象方法”。它属于一种不完整的方法,只含有一个声明,没有方法主体。下面是抽象方法声明时采用的语法:
abstract void X();
包含了抽象方法的一个类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象).而普通类的方法必须是一个完整的方法,即有声明也有方法主体。重要的是通过通用接口处理一系列类,就需要创建一个抽象类,因为基础类内的方法都肯定是“伪”方法。若去调用这些方法,就会出现错误。
CTBOK 2009-11-24
  • 打赏
  • 举报
回复
我自己的想法是:抽象类是SA或架构师之类的人用的,设计好一些基础的代码,让程序员沿着这条路走,这也是抽象类不能实例化的原因之一。至于接口,很明显了,是架构师用的,目的是制定编程规则。

我见过有一句较经典的话:接口偏重于设计重用,而抽象类偏重于代码重用
forsiny 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 youjianbo_han_87 的回复:]
不是,抽象类有其特殊的作用。类似于接口。在一些设计模式中,能起到很大的作用。
[/Quote]

请问所指特殊作用是什么呢?

接口的确和抽象类有一些相似之处,但他们从概念上来讲还是断然不同的。

我认为之所以有抽象类、接口这种东西,也是从概念上起源的。也就是楼主所谓之象征意义。
youjianbo_han_87 2009-11-24
  • 打赏
  • 举报
回复
不是,抽象类有其特殊的作用。类似于接口。在一些设计模式中,能起到很大的作用。
不善^ 2009-11-23
  • 打赏
  • 举报
回复
抽象类不能实例化
抽象类里可以加入一些类的共性 让子类去继承
比如 我们写个 动物类为抽象类把一些动物的共性写在这个类去
让子类去实现
forsiny 2009-11-23
  • 打赏
  • 举报
回复

我也这样觉得。
在使用上的区别就不说了。
我也觉得其概念性意义大于实际意义。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧