java - 我有一个抽象类和 2 个子类。如果你不能实例化抽象类,你如何使用它们

标签 java class inheritance abstract

我有一个抽象类和 2 个子类。如果您不能实例化抽象类,您将如何使用它们。我编写的代码最初使用一个类和一个子类,后来意识到我最好从父类中获得 2 个子类。我知道这是在 Java 中进行多重继承的一种方式。我现有的代码正在实例化父类,我是 与之合作。现在,我无法实例化父类,因为该类现在是抽象的。 我现在只能实例化子类吗?这些是普通类。

一个子类是员工,有出生日期、薪水,另一个子类是客户,有最喜欢的食物、付款明细

父类是person

如有任何帮助,我们将不胜感激。

最佳答案

您不需要实例化父类。例如,出于下一个原因,您必须使用它:

您可以在子类中保留一些通用的有用方法(并通过父类的变量链接到它)(如果需要,您也可以覆盖它),例如:

    abstract class Person{
       protected String name;
       protected String surname;
       public String getFullName(){return name+" "+surname;}
    }
    public class Employee extends Person{ 
       public Employee(String name, String surname){
          this.name=name; this.surname=surname;
       }
    }
    public class Mister extends Person{
       public Employee(String name, String surname){
          this.name=name; this.surname=surname;
       }
       public String getFullName(){return "Mr. "+name+" "+surname;}
    }

然后你可以这样做:

    Person p1=new Employee("Jonh","Doe");
    Person p2=new Mister("Jonh","Doe");
    p1.getFullName(); //John Doe
    p2.getFullName(); //Mr. John Doe

PS:抽象类不是为了多重继承,多重继承是另一回事(类可以从多个父类继承)

关于java - 我有一个抽象类和 2 个子类。如果你不能实例化抽象类,你如何使用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9641422/

相关文章:

java - 使用G1收集器时JVM泄漏内存?

Java初始化一个子类

Java 没有看到我的 MAIN 子句?

python 类命名空间和 init 函数

javascript - 无法读取未定义的属性 'split'

Javascript 原型(prototype)和访问类的问题

inheritance - Typescript 不允许具有不同构造函数签名的类的 typeof 继承

c# - C# 中泛型的接口(interface)和继承

c++ - 使用指针作为返回类型实现模板化接口(interface)的函数 -> 冲突返回类型错误

java - 如何在 Java 中获取 UNC 路径(带空格)的可用磁盘空间量