Linux
- 257 ответов
- 0 вопросов
156
Вклад в тег
interface MyRunnable{
void run();
}
interface Runnable{
void run();
}
interface MyRunnable extends Runnable{
void some(); //Обратите внимание что тут уже run нельзя объявить т.к. он объявлен в Runnable
}
class CoolRunnable implements MyRunnable{
void some(){System.out.print("some from MyRunnable")}
void run(){System.out.print("run from Runnable")}
}
interface Transport{
void gazuem();
void tormozim();
void signalim();
...
}
public class Avtobus implements Transport{
public void gazuem() {
//реализация особенности как едет автобус
}
public void signalim() {
//тут просто школьный Фа-Фа
}
}
//Велосипед
public class Velosiped implements Transport{
public void gazuem() {
//реализация особенности как будете крутить педали
}
public void signalim() {
//тут колокольчиком Дзинь-Дзинь
}
}
//Остальные реализации
Transport velik = new Velosiped();
Transport avtobus = new Avtobus();
...
Transport samolet = new Samolet();
...
И гдето , например, все виды транспорта попали в коллапс и надо резко посигналить.
velik.signalim(); //Дзинь дзинь
avtobus.signalim(); // Фа-Фа
samolet.signalim();// А тут звуков не будет но вам до лампочки и никаких ошибок не будет
...
//Дальше, например, у игрока есть метод использовать.
//Вам не нужно знать какой именно тип транспорта перед ним, вы просто делаете следующее:
class Player{
...
public void use(Object someObject){
if(someObject instanceof Transport){
//Сюда попадет абсолютно любой тип транспорта
((Transport)someObject).sadimsya(); //Что там внутри и как оно работает вас уже не интересует
}
}
...
}