Создание нового объекта в Java с именем класса абстрактного класса? - PullRequest
2 голосов
/ 01 ноября 2019

Я работаю над некоторыми работами по пересмотру экзамена и создал абстрактный класс Employee и два других класса (AcademicEmployee и ProfessionalEmployee), которые выходят за пределы класса Employee.

У меня есть открытая главная статическая пустотав классе Employee для запуска этих строк:

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);

Я думаю, что это работает как "Тип данных", а затем "Имя ссылки" = новый ...

, но я просто не понимаю, почему ямне разрешено установить тип данных Сотрудник. Извините, если это странный вопрос, я просто новичок в Java:)

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Ваш вопрос гласит:

Создание нового объекта в Java с именем класса абстрактного класса?

Но где вы создали новый объект, подобный этому? ? Вы создали два Object с, как показано ниже:

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

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

И оба AcademicEmployee и ProfessionalEmployee не могут быть abstract, в противном случае вы получите ошибку времени компиляции.

Поскольку AcademicEmployee и ProfessionalEmployee является Employee (поскольку вы расширили / реализовали его), вам разрешено назначать!

Это объясняется простыми словами здесь

0 голосов
/ 01 ноября 2019

Это понятие Полиморфизм в Java. Поскольку оба ваших класса ProfessionalEmployee и AcademicEmployee расширяются Employee, оба могут быть назначены на Employee эталонный объект.

Полиморфизм позволяет вам определять один интерфейс или класс и иметь несколько реализаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...