社区
Java SE
帖子详情
在JAVA中的抽象类中有必要定义抽象方法吗?我直接在它的子类中定义并实现这个方法不一样吗?
cbu
2002-05-16 10:29:50
小弟初学JAVA,为此迷惑中...
...全文
1106
29
打赏
收藏
在JAVA中的抽象类中有必要定义抽象方法吗?我直接在它的子类中定义并实现这个方法不一样吗?
小弟初学JAVA,为此迷惑中...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
Java
抽象类
详解
一、
抽象类
的基本概念普通类是一个完善的功能类,可以
直接
产生实例化对象,并且在普通类
中
可以包含有构造
方法
、普通
方法
、static
方法
、常量和变量等内容。而
抽象类
是指在普通类的结构里面增加
抽象
方法
的组成部分。那么什么叫
抽象
方法
呢?在所有的普通
方法
上面都会有一个“{}”,这个表示
方法
体,有
方法
体的
方法
一定可以被对象
直接
使用。而
抽象
方法
,是指没有
方法
体的
方法
,同时
抽象
方法
还必须使用关键字abstract做修
java
中
抽象类
与
抽象
方法
的
定义
及注意事项
接口
中
最重要的就是
抽象
方法
,
抽象
方法
的
定义
格式: [public] [abstract] 返回值类型
方法
名称(参数列表); 注意: 1.
抽象
方法
的
定义
就是加上abstract关键字,然后去掉大括号,
直接
分号结束。 2.
实现
类必须覆盖重写接口所有的
抽象
方法
,除非
实现
类是
抽象类
。 3.
抽象
方法
没有
方法
体,所以多个父接口
中
的
抽象
方法
如果重复也不会起冲突。
抽象
方法
所在的类,必须是
抽象类
才行。
抽象类
的
定义
格式: public abstract class 类名(){ }
抽象类
与普通类的区别: 1.抽象方
java
子类
必须
实现
_
Java
学习之接口的
子类
必须
实现
接口的全部
方法
吗?
接口的
子类
必须
实现
接口的全部
方法
吗?接口的
子类
必须
实现
接口
中
全部的
方法
吗?答案:不是。原因如下:如果
子类
是非
抽象类
,则必须
实现
接口
中
的所有
方法
;如果
子类
是
抽象类
,则可以不
实现
接口
中
的所有
方法
,因为
抽象类
中
允许有
抽象
方法
的存在!1、
抽象类
定义
抽象类
往往用来表征对问题领域进行分析、设计
中
得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句
中
用 abstract 修饰的类...
java
抽象类
和
抽象
方法
下面要注意一个问题:在《
JAVA
编程思想》一书
中
,将
抽象类
定义
为“包含
抽象
方法
的类”,但是后面发现如果一个类不包含
抽象
方法
,只是用abstract修饰的话也是
抽象类
。对于一个父类,如果它的某个
方法
在父类
中
实现
出来没有任何意义,必须根据
子类
的实际需求来进行不同的
实现
,那么就可以将这个
方法
声明为abstract
方法
,此时这个类也就成为abstract类了。
抽象类
、具体类是相对的,并非绝对的。包含
抽象
方法
的类称为
抽象类
,但并不意味着
抽象类
中
只能有
抽象
方法
,它和普通类一样,同样可以拥有成员变量和普通的成员
方法
。
java
抽象类
中
的
方法
都是
抽象
方法
吗_
抽象
方法
必须在
抽象类
中
吗
抽象
方法
必须在
抽象类
中
吗2020-07-01 15:01:18文/叶丹1、
抽象
方法
必须在
抽象类
中
,所以
抽象类
中
的
方法
都必须是
抽象
方法
。2、Final类
中
的属性和
方法
都必须被final修饰符修饰。3、最终类不能派生
子类
,最终
方法
不能被覆盖。4、
子类
要调用父类的
方法
,必须使用super关键字。
抽象
方法
:
java
中
的
抽象
方法
就是以abstract修饰的
方法
,这种
方法
只声明返回的数据类型、
方法
名称和所需的...
Java SE
62,616
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章