各位~~~抽象类,为嘛要用呢,说是抽象类,看的都抽象了

wsyangzuda 2011-08-07 02:41:37
求详解

最好举例子呀
...全文
66 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
daijope 2011-08-07
  • 打赏
  • 举报
回复
可以有很多类继承这个抽象类嘛,把实现放到子类中去,这是面向对象的思维,很重要,由于Java的单继承,所以接口就因运而生了。
abstract class Person {
public abstract void speak() ;
}
class Chinese {
public void speak() {
System.out.println("speak Chinese");
}
}

class Japanese{
public void speak() {
System.out.println("speak Japanese");
}
}
-迷糊- 2011-08-07
  • 打赏
  • 举报
回复
(Thinking in JAVA)
之所以要建立这个通用接口,唯一的原因就是它能为不同的子类型作出不同的表示。它为我们建立了一种基
本形式,使我们能定义在所有衍生类里“通用”的一些东西。为阐述这个观念,另一个方法是把Instrument
称为“抽象基础类”(简称“抽象类”)。若想通过该通用接口处理一系列类,就需要创建一个抽象类。对
所有与基础类声明的签名相符的衍生类方法,都可以通过动态绑定机制进行调用(然而,正如上一节指出的
那样,如果方法名与基础类相同,但自变量或参数不同,就会出现过载现象,那或许并非我们所愿意的)。
如果有一个象Instrument 那样的抽象类,那个类的对象几乎肯定没有什么意义。换言之,Instrument 的作
用仅仅是表达接口,而不是表达一些具体的实施细节。所以创建一个Instrument 对象是没有意义的,而且我
们通常都应禁止用户那样做。为达到这个目的,可令Instrument 内的所有方法都显示出错消息。但这样做会
延迟信息到运行期,并要求在用户那一面进行彻底、可靠的测试。无论如何,最好的方法都是在编译期间捕
捉到问题。
针对这个问题,Java 专门提供了一种机制,名为“抽象方法”。它属于一种不完整的方法,只含有一个声
明,没有方法主体。下面是抽象方法声明时采用的语法:
abstract void X();
包含了抽象方法的一个类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成
abstract(抽象)。否则,编译器会向我们报告一条出错消息。
若一个抽象类是不完整的,那么一旦有人试图生成那个类的一个对象,编译器又会采取什么行动呢?由于不
能安全地为一个抽象类创建属于它的对象,所以会从编译器那里获得一条出错提示。通过这种方法,编译器
可保证抽象类的“纯洁性”,我们不必担心会误用它。
如果从一个抽象类继承,而且想生成新类型的一个对象,就必须为基础类中的所有抽象方法提供方法定义。
如果不这样做(完全可以选择不做),则衍生类也会是抽象的,而且编译器会强迫我们用abstract 关键字标
志那个类的“抽象”本质。
即使不包括任何abstract 方法,亦可将一个类声明成“抽象类”。如果一个类没必要拥有任何抽象方法,而
且我们想禁止那个类的所有实例,这种能力就会显得非常有用。
hohoemi52 2011-08-07
  • 打赏
  • 举报
回复
需要写抽象方法的时候。抽象方法必须放在抽象类里不是么。。
抽象方法一般都是写在父类里。。
在子类继承父类时候重写其抽象方法。。

抽象方法 举个例子 人吃东西 西方人习惯用叉 咱们用筷子 小孩还可能直接用手抓

人类就是一个父类 就有吃这个方法
但是不能把这个方法写死 写成用筷子或者用叉 这时候就要用抽象方法了
这时候这个父类就得是抽象类 因为他有抽象方法
当子类继承这个父类的时候 根据情况再重写这个抽象方法
西方人继承父类重写方法就用叉,东方人就用筷子....


我是刚刚学完面向对象
希望说的不对的地方大家指正。。
互相学习愉快...

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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