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



我正在做一些考试复习工作,并创建了一个Employee抽象类和另外两个类(AcademyAloyee和ProfessionalEmployees(,这两个类从Employee类扩展而来。

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

我认为它的工作方式是"数据类型",然后"引用名称"=新。。。

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

这是java中多态性的一个概念。由于类ProfessionalEmployeeAcademicEmployee都扩展了Employee,所以它们都可以分配给Employee引用对象。

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

您的问题如下,

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

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

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

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

由于AcademicEmployeeProfessionalEmployeeEmployee(因为您已经扩展/实现了它(,因此允许您分配!

这里用简单的词语解释

最新更新