java - 使用抽象类的类名在 Java 中创建一个新对象?

标签 java class object abstract

我正在做一些考试复习工作,并创建了一个 Employee 抽象类和另外两个从 Employee 类扩展出来的类(AcademicEmployee 和 ProfessionalEmployee)。

我在 Employee 类中设置了一个 public static void main 来运行这些行:

ProfessionalEmployee boss = new ProfessionalEmployee("The Big Man", 5000.0, null, 10);
AcademicEmployee e1 = new AcademicEmployee("Ryan", 1000.0, boss, 'A');

我知道你不能实例化一个抽象类,实际创建的对象是“new”关键字后面的任何东西,但为什么我可以这样做:

Employee boss = new ProfessionalEmployee("The Big Man", 5000.0, null, 10);

我认为它以“数据类型”然后“引用名称”= new ...的方式工作

但我对为什么允许将数据类型设置为 Employee 感到困惑。抱歉,如果这是一个奇怪的问题,我只是 Java 的新手:)

最佳答案

这是Polymorphism的一个概念在 java 。由于您的类 ProfessionalEmployeeAcademicEmployee 都扩展了 Employee,因此两者都可以分配给 Employee 引用对象。

多态性允许您定义一个接口(interface)或类并具有多个实现。

关于java - 使用抽象类的类名在 Java 中创建一个新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58655293/

相关文章:

java - 二维对象包装 Java

java - 从 Java 中的字符串运行代码

java - 无法在 Eclipse 中导入 Apache HTTP

php - 为什么我不能在PHP中调用此 protected 函数?

ios - ARKit 在场景中放置一个自定义对象

Javascript - 将对象键打印到 HTML

java - 如何使用带有类的构造函数模拟对象?

php - 找不到类 'Doctrine_Record'

java - 在类声明中抛出异常

Java Kryonet 发送对象时出错