java中到底为什么要用到抽象类?

比如有个类A,把它设置成abstract是为了不让它实例化,只能表示一个抽象的或者不具体的无法实例化的概念,但是就算不在这个A的前面加abstract照样可以实现很多类的继承,那我真的不太理解设置抽象类的意义到底在哪里,请各位不吝赐教!

4个回答

抽象类定义一些有一定关系的类的共同行为,比如一个几何图形类,几何图形包括多种图形,如,正方形,圆形,矩形,三角形等,而每种图形用有各自的面积周长计算公式,所以可以在几何图形类里抽象这些公共方法,而不提供真正方法(也没法提供,所以只能是抽象了)。之后各种图形都可以进行面积周长的比较,总不能重载很多个比较函数,所以这时就可以定义一个比较函数,参数类型是父类,这样这些图形就都可以进行比较了。而在比较函数里,由于多态,对象会调用自己独特的面积周长计算函数。

havedream_one
havedream_one en
4 年多之前 回复
qq_23908539
qq_23908539 谢谢你。所以这个意思是不是就是说如果设置抽象类其实是为了这个多人操作同一个代码的时候避免不必要的错误(比如A君把WC类“设计”成抽象的,他自己知道,但是没在前面加abstract,B君这时候来就很容易把WC类误以为是费抽象的这样)?
4 年多之前 回复
havedream_one
havedream_one 回复qq_23908539: 去掉之后就可以new一个对象,而对于这样的类new 一个对象是没有什么意义的
4 年多之前 回复
havedream_one
havedream_one 回复qq_2390853去掉之后就可以new一个对象,而对于这样的类new 一个对象
4 年多之前 回复
qq_23908539
qq_23908539 谢谢,这些我都懂,可是我的意思是如果我把父类前的abstract去掉了,照样可以实现这些功能啊,为啥非得硬性给他设置成abstract?
4 年多之前 回复

比如shape类有一个方法叫getarea

zhrubin
zhrubin 回复qq_23908539: 比如不用抽象类,getArea这个方法,你的代码要怎么写?
4 年多之前 回复
qq_23908539
qq_23908539 嗯,,请问这个抽象不抽象有什么联系么
4 年多之前 回复

本身不允许被实例化,有的方法不好实现,本身实例化没有意义

比如说抽象流,你说怎么实现呢?

但是不同于接口,抽象类可以编写一些代码,有时候虽然做什么不确定,但是做的流程是确定的,这些代码可以先写起来。

u013179958
CSDNRGY 我觉得抽象类一般应该是在企业开发中才会用到,如果是自己开发程序,完全用不上这些
4 年多之前 回复

因为抽象类是一种概念,没有对应的实例(即不能定义成对象的实例)

例如定义抽象类车,只是抽取了车的共性,但此抽象类没有实例的车可以对应。这只是一种为了与现实对应的定义方法,你不用抽象关键字,你定义的类就可以实例化。但是实例化后,定义出来的实例没有实用价值。

qq_23908539
qq_23908539 谢谢你。所以这个意思是不是就是说如果设置抽象类其实是为了这个多人操作同一个代码的时候避免不必要的错误(比如A君把WC类“设计”成抽象的,他自己知道,但是没在前面加abstract,B君这时候来就很容易把WC类误以为是费抽象的这样)?
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问