Когда я перехожу через мой онлайн-учебник, я наткнулся на этот урок. У меня есть интерфейс и два класса, которые реализуют этот интерфейс.В полиморфизме Java, могут ли быть созданы все классы, реализующие интерфейс, как интерфейс этого типа?
public interface Payable {
double getPaymentAmount();
}
и
- класс
Invoice
, который реализует интерфейс вышеPayable
- класса
SalariedEmployee
, который расширяет абстрактный классEmployee
, который реализует интерфейсPayable
. - Испытательный класс, который содержит основной метод проверки этого.
В настоящее время в тестовом классе, при создании массива объектов, тип объекта был передан как Payable[]
, а не SalariedEmployee[]
или Invoice[]
, как
public static void main(String[] args) {
Payable[] payableObjects = new Payable[4];
payableObjects[0] = new Invoice("0000", "abc", 1,2);
payableObjects[1] = new SalariedEmployee("test", "user", "000-000", 35);
- Является ли это потому, что все классы реализует интерфейс Payable []?
- Если интерфейс определен в иерархии верхнего уровня, всегда ли возможно создавать объекты всех классов, реализующих этот интерфейс?
1. Да, вы получили бы ошибку компилятора, если бы это было не так. 2. Да, возьмите пример «Список» или «Карта», где вы всегда должны объявлять переменную как «Список» или «Карта», чтобы иметь возможность изменять тип объекта assgning. Ваша общая информация о том, что вы только хотите вызвать методы, предоставляемые этим конкретным интерфейсом. – SomeJavaGuy
Спасибо @KevinEsche. Пожалуйста, опубликуйте его как ответ, и я соглашусь с ним. – scott
Да, в этом весь смысл полиморфизма. –