为什么要有抽象类

抽象方法只定义,没有写方法,只有继承后重载方法才能实例化,为什么要这样做,这个和直接重载有什么区别... 抽象方法只定义,没有写方法,只有继承后重载方法才能实例化,为什么要这样做,这个和直接重载有什么区别 展开
 我来答
众态生态治理有限公司
2012-08-31 · TA获得超过1330个赞
知道小有建树答主
回答量:906
采纳率:66%
帮助的人:455万
展开全部
我的理解就是抽象类的作用就是
做继承用的,
方法就是用来重写的。
你能明白吗?
你如果定义了一个动物的类:
public abstract class Animal{
//定义一个动物叫的抽象方法
public abstract String shout();
}

这样在后面做继承的时候,就直接重写这个方法就OK了,
抽象类定义的方法子类在继承的时候会报错,提示你要实现没有实现的方法,
这样写的好处就是节约了代码,
而且很好的理解啊。
你知道为什么要使用类吗?
因为“累”,所以类,因为在写代码的过程中会有许多的重复的代码,所以就出现了类
你定义了一个抽象类为父类,那么后面的要继承的类必须要记住这句话,
你想要成为我的孩子吗?
那你就必须要继承我的方法,我的属性!!!
你能理解吗、
应该很好理解吧。。。。

这个不叫继承重载方法吧,
继承的方法
子类在继承父类的方法时候,只能叫做重写,不能叫做重载,重载要在自己的类中进行!
希望你能帮到你。。。。你能理解吗?我说的很白了。。。。
lxzhoupeng
2012-09-01 · 超过23用户采纳过TA的回答
知道答主
回答量:128
采纳率:0%
帮助的人:51.8万
展开全部
举个例子:
有两类鸭子,第一类是家养的鸭子,不会飞行,会嘎嘎的叫,第二类是野鸭子,会飞行,也会嘎嘎的叫;
我们可以定义一个抽象类,里面有两个抽象方法
public abstract void quack(){} //嘎嘎地叫
public abstract void fly(){} // 飞行

下面我们定义两个鸭子类,一个家养的鸭子类,一个野鸭子类。
家养的鸭子只需要实现抽象类里面的quack()方法,应为它只会叫,不会飞。
野鸭子则可以实现抽象类里面的quack()、fly()方法,应为他又会叫,又会飞。

定义抽象类的好处就是可以选择继承抽象类里面的方法。

重载 这个概念我想你还没有搞明白,重载是重写父类中的方法,这个方法可以有多个,但是方法名必须同父类的方法名相同,参数类型、位置以及返回值可以不相同。

只要是你自己写的类,后者实现接口或实现抽象类的类都可以实例化。应为实例化之后才可以调用父类中的方法、属性,和自己类的方法、属性。但是子类重写父类中的方法之后就不能调用到父类的方法了,只会调用子类重载父类的方法。

希望对你有帮助!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
舒心文档
2018-04-08 · TA获得超过6354个赞
知道小有建树答主
回答量:343
采纳率:100%
帮助的人:9.5万
展开全部

1、在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的。

2、通过从这个抽象体派生,也可扩展此模块的行为功能。为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在。

3、抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。

抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
198901245631
推荐于2017-09-25 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1692万
展开全部
抽象类的好处是只定义了接口的规范,不具体实现。
解释:抽象类出现在接口中,接口主要就是为了实现多次复用,也就是说可以被不同的子类实现这些接口,来根据实际需要来重写接口方法,以达到特定的目的。
备注:通常多人同时开发某些模块的时候,接口显的非常重要,只需要给其他开发人员提供接口,之后就可以互不影响的进行代码开发,大大的提高了工作效率。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乌光QS
2012-08-31 · TA获得超过1365个赞
知道小有建树答主
回答量:464
采纳率:100%
帮助的人:444万
展开全部
抽象类中也可以实现某些方法,有某些成员,它的子类可以利用这些方法和成员,不需要重新写。你可以看看AbstractList和它的几个子类比如ArrayList和LinkedList的源码(只需要看它们之间的关系的那些部分,比如子类中调用父类的方法)。如果只有方法声明,那不如写成接口。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式