在JAVA中的抽象类中有必要定义抽象方法吗?我直接在它的子类中定义并实现这个方法不一样吗?

cbu 2002-05-16 10:29:50
小弟初学JAVA,为此迷惑中...
...全文
1106 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dickensi 2002-05-20
  • 打赏
  • 举报
回复
【一日一語】 2002/05/20(月曜) 第074期

④形だけのプロジェクト編成は、どちらかと言えば
 『害あって益少なし』という結果になる。

読み方:
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 形(かたち)
 編成(へんせい)
 害あって益少なし(がいあってえきすくなし)
   =害多益少
 結果(けっか)

中文
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
只注重形式上的項目組構成,
不管怎Mu説会産生『害多益少』的結果。

ewang_365 2002-05-17
  • 打赏
  • 举报
回复
shape调用的时候下蒴造型了circle,但是如果你没定义draw(),那我明明把s1赋予了一个圆,居然画不出来,岂不是不符合逻辑?
ewang_365 2002-05-17
  • 打赏
  • 举报
回复
上面的就是说:如果你shape中不定义draw(),那么将在s1.draw()语句中无法划出一个圆。
cbu 2002-05-17
  • 打赏
  • 举报
回复
谢谢各位的热心解答!也许我还没理解面向对象的精髓。下面继续...

to:dickensi()流星·逐日()
请说说
shape s1 = new circle(..);
circle s2 = new circle(..);
s1.draw(); //结果话了一个元
s2.draw(); //结果也是话了一个元

的区别,以及shape定义的好处。
ewang_365 2002-05-16
  • 打赏
  • 举报
回复
拜托,你考虑父类的时候不要总是局限于它的方法是为了子类继承的,你要想想父类也要有自己的方法阿.它的方法不只是为了子类继承,它的方法也表明了他自己拥有这个属性!!!
cbu 2002-05-16
  • 打赏
  • 举报
回复
TO:ewang_365
我没说不定义呀,我现在就是问直接在各个子类(3角,4角,N角)中定义求面积的方法有什么不妥呢?就是因为抽象类中的求面积的方法不能帮我解决任何问题呀。难到抽象方法存在的意义就是要说明它的子类中将要出现这个方法。那我不在子类中不实现它有怎么样呢?(比如说对于5边型我只要求它的周长即可)
Dickensi 2002-05-16
  • 打赏
  • 举报
回复
抽象类是面向象性理论多太性的一种体现!
还有overload,override,interface!!!!

楼上说的是:
一个shape类可以作为抽象类,
用它可以引用circle,rectangle...,而在调用其方法时将产生下朔造型!
这就体现了多台行!!!!!!!!
shape s1 = new circle(..);
shape s2 = new rectangle(..);
s1.draw();//结果话了一个元
s2.draw();//结果话了一个矩形
自己慢慢分析!狠有必要的!

ewang_365 2002-05-16
  • 打赏
  • 举报
回复
也就是说,不能因为面积无法定义而在多边形里面不定义面积这个方法。
ewang_365 2002-05-16
  • 打赏
  • 举报
回复
对,你说的边数是他们共同有的特征,但是你有没有想过,一个完整的类,就如你说的“多边型”必定也应当有面积的定义,要不难道说一个多边型不能有面积???但是面积又要看具体形状来定,因此在“多边型”的类里面只能对他们做个抽象的定义,也就是说只有“面积”这个方法名字,来证明“多边型”也有面积,至于怎么实现,还要看子类是什么样的多边型。
ewang_365 2002-05-16
  • 打赏
  • 举报
回复
对,你说的边数是他们共同有的特征,但是你有没有想过,一个完整的类,就如你说的“多边型”必定也应当有面积的定义,要不难道说一个多边型不能有面积???但是面积又要看具体形状来定,因此在“多边型”的类里面只能对他们做个抽象的定义,也就是说只有“面积”这个方法名字,来证明“多边型”也有面积,至于怎么实现,还要看子类是什么样的多边型。
cbu 2002-05-16
  • 打赏
  • 举报
回复
to:ewang_365
“我举个例子给你:比如有三角型,正方形,长方形,你说他们的共同父类是什么?”

答:多边型或几何图形,不能定义具体的对象,需要一个抽象类描述他们的公共属性,如:边数。

我要知道的是抽象函数存在的必要性。如果你要说什么求面积的方法,请看我

前面的回复。
ewang_365 2002-05-16
  • 打赏
  • 举报
回复
它的父类肯定是“形状”,但是形状里面的方法不可能把计算形状面积或周长的具体方法定义出来,因为他还没有确定是什么形状,所以只好定义成抽象的,但是如果你非要定义成非抽象的,那么你说这么多形状岂不是永远不可能有共同的父类了,那么这就违背了面向对象的原则
cbu 2002-05-16
  • 打赏
  • 举报
回复
更正:

to: ewang_365
“这样就在抽象类中定义一个抽象的方法算是对这个方法的一个概括”

问:怎么能说是“概括”,抽象类中的抽象方法不能有方法体呀,我想“概
● ● ●
括”都不性呀!

还是不服~
cbu 2002-05-16
  • 打赏
  • 举报
回复
更正:

to: ewang_365
“这样就在抽象类中定义一个抽象的方法算是对这个方法的一个概括”

问:怎么能说是“概括”,抽象类中的抽象方法不能有方法体呀,我想“概
● ● ●
括”都不性呀!

还是不服~
ewang_365 2002-05-16
  • 打赏
  • 举报
回复
我举个例子给你:比如有三角型,正方形,长方形,你说他们的共同父类是什么?
cbu 2002-05-16
  • 打赏
  • 举报
回复
to: Iforgot
"难道你要多做无用功吗?"
从抽象对象继承而来的子类中如果需要用到这个抽象方法都要在子类中重新定义呀。
既然向你说的“当然可以,只是、你要看看你的目的呀!”到底哪种是无用功?

还是不服~
cbu 2002-05-16
  • 打赏
  • 举报
回复
to: ewang_365
“这样就在抽象类中定义一个抽象的方法算是对这个方法的一个概括”

问:怎么能说是“概括”,抽象函数中的抽象方法不能有方法体呀,我想“概括”都不性呀!

还是不服~
ewang_365 2002-05-16
  • 打赏
  • 举报
回复
你看我的回答了吗??
cbu 2002-05-16
  • 打赏
  • 举报
回复
TO:gangyi(Raymond)
是不是如果抽象类中定义的抽象方法在其子类中没有实现,编译就通不过?(如果答案是肯定的,那么抽象方法还是有它的必要性,起码它可以防止子类遗漏对一些必要(重要)方法的实现。除此之外我看不出还有什么必要性。

你说:“反过来问,你如果抽象类一个方法都不定义,那要抽象类干什么?”
答:可以抽象出其子类的公共属性,避免在子类中重复定义。同时它自身有无法定义一个具体的对象。

你说:“......显然是不可能的--你还不知道具体是什么形状呢”
问:这是逻辑?难道子类中的所有方法你都在抽象类中定义了抽象方法?如果没有,那我就要用你的话说了:“......显然是不可能的--你还不知道这个方法具体要实现呢。

不服~

(纯属讨论,话语也许过于犀利,请误见怪!)
Iforgot 2002-05-16
  • 打赏
  • 举报
回复
Patrick_DK(疾风摩郎) 好像是对的,我没细看。
加载更多回复(9)

62,616

社区成员

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

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