dima_meln
@dima_meln
Студент, Java Junior

Использование интерфейсов в Java?

Открыл для себя новую тему в Java - интерфейсы. Тестировал на простых примерах что да как работает. Возник вопрос коректно ли использовать (правильно ли) использовать интерфейсы в даном примере?

Есть интерфейс Second, классы Test и Tester, которые унаследуються от даного интрефейса

public interface Second {
    void print();
}

public class Test implements Second{    
    public void print() {
        println();
    }

    private void println(){
        System.out.println("123");
    }
}

public class Tester implements Second{
    public static void main(String[] args) {
        Tester tester = new Tester();
        tester.print();
    }
    
    public void print() {
        Test test = new Test();
        test.print();
        System.out.println("++++");
    }
}
  • Вопрос задан
  • 2262 просмотра
Решения вопроса 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Автору. Вы взяли какой то очень невнятный пример себе. Образно говоря интерфейс это абстракция.
К примеру у вас есть некая игра. В игре есть транспорт. Вы задаетесь вопросом а какбы сделать так что бы не знать о том что именно это за транспорт но при этом уверенно использовать его.
1) Вы смотрите все свои классы: легковая машина, автобус, самолет, катер, велосипед.
2) У всех классов транспорта можно выделить общие черты. Они могут ехать вперед\назад, рулить влево\вправо, подать сигнал и т.д.
3) Описываете интерфейс с этими выделенными общими методами. Например
interface Transport{
   void gazuem();
   void tormozim();
   void signalim();
...
}

4) Теперь настало время реализовать этот интерфейс. Пример:
public class Avtobus implements Transport{    
    public void gazuem() {
        //реализация особенности как едет автобус
    }
    public void signalim() {
        //тут просто школьный Фа-Фа
    }
}
//Велосипед
public class Velosiped implements Transport{    
    public void gazuem() {
        //реализация особенности как будете крутить педали
    }
    public void signalim() {
        //тут колокольчиком Дзинь-Дзинь
    }
}
//Остальные реализации

5) Абстрагируемся в коде от реализаций конкретных видов транспорта, т.е. работаем с ними как с черной коробкой. Например:

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(); //Что там внутри и как оно работает вас уже не интересует
          }
}
...
}

Вот в целом как то так это выглядит.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Soulkeeper31
@Soulkeeper31
Чтобы лучше понять, для чего нужны интерфейсы - изучите принципы SOLID
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы