请问,Java抽象类具体有什么用处?

比如这个例子abstractclassAnimal//定义抽象类{Stringstr;Animal(Strings)//定义抽象类的一般方法{str=s;}abstrac... 比如这个例子

abstract class Animal //定义抽象类
{
String str;
Animal(String s) //定义抽象类的一般方法
{
str=s;
}
abstract void eat(); //定义抽象方法
}
class Horse extends Animal //定义继承Animal的子类
{
String str;
Horse(String s)
{
super(s); //调用父类的构造方法
}
void eat() //重写父类的抽象方法
{
System.out.println("马吃草料!");
}
}
class Dog extends Animal
{
String str;
Dog(String s)
{
super(s);
}
void eat()
{
System.out.println("狗吃骨头!");
}
}
class test
{
public static void main(String args[])
{
Horse Horse1 = new Horse("马");
Dog Dog1 = new Dog("狗");
Horse1.eat();
Dog1.eat();
}
}
运行结果:
马吃草料!
狗吃骨头!

不使用抽象类也能得到一样的运行结果,为什么还要先定义抽象类呢?
展开
 我来答
一只大桃子呀呀
2011-11-21 · TA获得超过570个赞
知道小有建树答主
回答量:261
采纳率:100%
帮助的人:209万
展开全部
因为这个例子根本就没有体现出多态。
现在来写一个画板程序,在一个面板上可以画多种形状,如圆形、正方形、三角形。
定义一个面板类,该类负责将形状画出来,也就是说,它有一个方法接收一个形状的参数。
public class DrawPanel {
public void draw(YuanXing yx) {
//画圆
}
}
问题来了,我要画一个正方形,难道我又要定义一个draw(ZhengFangXing zfx)这么一个方法?假设这个面板可以画几十种形状,难道你要定义几十个这样的方法?那不蛋疼啊。
正方形,圆形,三角形都是形状,所以应该抽象出一个形状的类。
public abstract class Graphics{
public abstract void draw();//形状负责把自己画出来,自己是什么样的只有自己知道
}
画板的draw方法的参数改成
public void draw(Graphics g){
g.draw();
}

什么正方形,圆形,三角形只要继承那个Graphics类就可以了,然后实现draw方法,将具体的形状传给DrawPanel的draw就可以画出对应的形状出来。
小白AI绘画
2011-11-21 · TA获得超过1358个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:469万
展开全部
假设我有这么一个类,他有一个喂养动物的方法,方法的参数就是他要喂的动物,那么我可以这么写
class Man1{
void feed(Animal a){
a.eat();
}
}
如果没有这个抽象类,那就只能分开写了
class Man2{
void feed(Dog d){d.eat();}
void feed(Horse h){h.eat();}
}
想象一下,假如继续扩展动物类的实现,有更多动物了,Man1还是只要一个方法,Man2却要跟着扩展重载N多方法,这就是抽象和接口的优势
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangchaojunooo
2011-11-22 · TA获得超过548个赞
知道小有建树答主
回答量:609
采纳率:0%
帮助的人:509万
展开全部
抽象类和接口的定义,就是为了定义一个统一的调用方法的标准,所有在这个抽象类或者接口下派生的子类,都可以通过这个抽象类或接口进行统一的调用,

最典型的就是数据库接口了,现在的数据库层出不穷,现在的java.sql包下把connection statment,resultset都定义好了,新数据库出来,只要是实现了这些抽象的方法,大家写的数据库查询语句就可以一直沿用下去,不会造成新出来一个数据库就学习新类的混乱,也保证了开发知识的延续性,

其实这和现实中的好多通讯硬件一样的,就像大家一起制定了以太网的通讯协议,在协议之后不管出了多少网卡,具体里面的设计是怎样的,都是插上就可以用了,

抽象类,接口实际上就是标准,为了具体的实现定义好的标准而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式