用抽象类的类名在Java中创建新对象?

问题描述 投票:0回答:2

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

我在Employee类中设置了一个公共的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:)

java class object abstract
2个回答
0
投票

这是Java中Polymorphism的概念。由于类ProfessionalEmployeeAcademicEmployee都扩展了Employee,因此两者都可以分配给Employee参考对象。

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


0
投票

您的问题读为,

用抽象类的类名在Java中创建新对象?

但是您在哪里创建了这样的新对象?您已经创建了两个Object,如下所示,

 new AcademicEmployee("Ryan", 1000.0, boss, 'A');

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

而且,AcademicEmployeeProfessionalEmployee都不能为abstract,否则会出现编译时错误。

由于AcademicEmployeeProfessionalEmployee Employee(由于您已对其进行扩展/实施,因此您可以进行分配!

这用简单的词here来解释

© www.soinside.com 2019 - 2024. All rights reserved.