Anu*_*Jha 25 java abstract-class class
最近在一次采访中,我被问到一个非常笼统的问题"java中的抽象是什么".我给出了定义,然后在摘要上引入了一些其他问题,即抽象方法和抽象方法与具体方法之间的区别等.最后,面试官要求给出一个实时的例子,当我应该使用或定义一个类作为抽象时.我感到困惑.我举了一些例子,但他不相信.
我用谷歌搜索,但没有找到真正的解决方案.
那么有人可以给我实时的例子,即当他在他/她的项目中将一个类定义为抽象时,为什么?
谢谢.
Rah*_*thi 22
从这里发现的一个很好的实时例子: -
抽象类的具体示例是名为Animal的类.你在现实生活中看到很多动物,但只有动物种类.也就是说,你永远不会看到紫色和毛茸茸的东西,并说"这是一种动物,没有更具体的方法来定义它".相反,你会看到一只狗,一只猫或一只猪......所有的动物.关键是,你永远不会看到一只动物走来走去,而不是更具体的东西(鸭子,猪等).Animal是抽象类,Duck/Pig/Cat都是派生自该基类的类.动物可能会提供一种称为"年龄"的功能,为动物增加1年的生命.它还可能提供一个名为"IsDead"的抽象方法,当被调用时,它将告诉您动物是否已经死亡.由于IsDead是抽象的,每只动物都必须实施它.因此,一只猫可能会在它达到14岁后决定死亡,但鸭子可能会认为它在5岁之后死亡.抽象类Animal为从它派生的所有类提供Age函数,但是每个类都必须自己实现IsDead.
一个商业榜样:
将List作为抽象类没有意义,因为anArrayList的工作方式与LinkedList相比存在根本区别.同样,Map和Set.如果我只是处理一组对象并且不关心它是List,Map还是Set,我可以使用Collection接口.
小智 7
在这里,关于抽象类的东西......
实时示例——
如果您想制造一辆新车(WagonX),其中包含另一辆车的所有属性,如颜色、尺寸、引擎等,并且您想在您的汽车中添加一些其他功能,如模型、baseEngine。那么只需创建一个抽象在类 WagonX 中,您将所有预定义的功能用作抽象,而另一个功能是具体的,由您定义。
另一个扩展抽象类WagonX的子类,默认情况下它还访问抽象类中实例化的抽象方法。子类还通过创建子类的对象来访问具体方法。
为了代码的可重用性,开发人员主要使用抽象类。
abstract class WagonX
{
public abstract void model();
public abstract void color();
public static void baseEngine()
{
// your logic here
}
public static void size()
{
// logic here
}
}
class Car extends WagonX
{
public void model()
{
// logic here
}
public void color()
{
// logic here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92109 次 |
| 最近记录: |