Интерфейс только декларирует методы
Класс (не abstract) должен реализовать все методы интерфейса
Описание интерфейса:
// Car.java
// Невозможно создать объект интерфейса
public interface Car {
String TYPE = "car";
void go();
void stop();
String getName();
int getMaxSpeed();
// Геттеры getName() и getMaxSpeed() будут получены из класса, для которого запускается метод printCar()
default void printCar() {
System.out.println(getName() + " is a " + TYPE + ". It has ability to go with max speed of " + getMaxSpeed());
}
}
Реализации интерфейса:
// Kia.java
public class Kia implements Car {
@Override
public void go() {
System.out.println("Разогналась до 100 км/ч за 12 секунд");
}
@Override
public void stop() {
System.out.println("Остановилась со скорости 60 км/ч за 8 секунд");
}
@Override
public String getName() {
return "KIA";
}
@Override
public int getMaxSpeed() {
return 220;
}
}
// Bmw.java
public class Bmw implements Car {
@Override
public void go() {
System.out.println("Разогналась до 100 км/ч за 4 секунды");
}
@Override
public void stop() {
System.out.println("Остановилась со скорости 60 км/ч за 3 секунды");
}
@Override
public String getName() {
return "BMW";
}
@Override
public int getMaxSpeed() {
return 360;
}
}
Пример работы с классами и интерфейсом:
// Example.java
public class Example {
public static void main(String[] args) {
// !!! No ability to do: Car c = new Car();
System.out.println("Object type: " + Car.TYPE);
Car kia = new Kia();
Car bmw = new Bmw();
kia.go();
bmw.go();
kia.stop();
bmw.stop();
System.out.println("KIA: " + kia.getMaxSpeed());
System.out.println("BMW: " + bmw.getMaxSpeed());
// разогнать все машины
List<Car> carList = List.of(kia, bmw);
for (Car car : carList) {
car.go();
}
// остановить все машины
for (Car car : carList) {
car.stop();
}
// строчное представление машин
for (Car car : carList) {
car.printCar();
}
}
}
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар «Как самостоятельно учиться»
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.