抽象类: - 实时例子

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接口.

  • @duffymo: - 用另一个例子更新了我的答案!! 希望你不要讨厌这个;) (3认同)

小智 7

在这里,关于抽象类的东西......

  1. 抽象类是一个不完整的类,所以我们不能实例化它。
  2. 如果方法是抽象的,则类必须是抽象的。
  3. 在抽象类中,我们同时使用抽象和具体方法。
  4. 同时定义抽象类和最终类是非法的。

实时示例——

如果您想制造一辆新车(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)