Java интерфейс (interface)

Интерфейс (interface)-указывает, что класс должен делать, но реализует действия, то как он это делает.

Интерфейс в Java можно сравнить в реальность с контрактом между людьми. Он реализует определенные нормы через методы Java и классы, которые реализует этот интерфейс, должны следовать строгим правилам, и реализации методов.

Синтаксис

Интерфейс объявляется так же, как и класс. Пример общего вида интерфейса:

//nookery.ru
public interface Const {
    public  int COORDINATE_X=0;
    public int COORDINATE_Y=0;
    int INKRIMENT=1;
    int BALL_X=0;
    int BALL_Y=0;
      
   void speed(int arg); 

    }

Переменные могут быть объявлены внутри деклараций интерфейса. Они являются окончательными и неявно статическими их еще называют константами. Также переменные должны быть инициализированы с постоянным значением. Все методы и переменные являются неявно открытыми, интерфейс сам по себе является публичным, открытым классом.

Ниже приведен пример определения интерфейса.

interface Test{ 
   void speed(int arg); 
}

Реализация интерфейсов

Для того, чтобы реализовать интерфейс, включают в себя ключевое слово  implements в определении класса, а затем создают методы, определенные в интерфейсе.

Общий вид класса, который включает в себя implements выглядит следующим образом:

class Имя_Класса [extends superclass] [implements interface [Имя_Интерфейса]] { 
 //Тело класса
}

speed() объявляется с помощью (public) публичного модификатора доступа. При реализации метода интерфейса, он должен быть объявлен как public.

//nookery.ru
public interface Const {
    public  int COORDINATE_X=0;
    public int COORDINATE_Y=0;
    int INKRIMENT=1;
    int BALL_X=0;
    int BALL_Y=0;
       
   void speed(int param); 

    }
class Test implements Const{
  // Implement Callback's interface
  public void speed(int p) {

    System.out.println("Скорость мяча равна=" + p);
  }
}

Java Интерфейс как тип данных

После того, как мы определяем интерфейс, мы можем использовать его в качестве типа для экземпляра объекта , все это мы создаем через класс реализации.

В следующем примере вызывается метод обратного вызова () через ссылку на интерфейс переменной:

//nookery.ru

public interface Const {
    public  int COORDINATE_X=0;
    public int COORDINATE_Y=0;
    int INKRIMENT=1;
    int BALL_X=0;
    int BALL_Y=0;
   
     void speed(int param); 

    }
class Test implements Const{
  // Implement Callback's interface
  public void speed(int p) {

    System.out.println("Скорость мяча равна=" + p);
  }
}
public class Realised {
  public static void main(String args[]) {
    Const c = new Const() {

        @Override
        public void speed(int param) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    };
    c.speed(70);

  }
}

Результатом работы программы будет: 70

Java Полиморфизм и интерфейс.

Интерфейс предназначен для полиморфизма. Интерфейс определяет список методов , действующих в качестве контракта между интерфейсом и его реализации. Один интерфейс может быть реализован более чем один раз и в  каждой отдельной реализации одного и того же интерфейса будет выполнятся тот же список методов.  Поэтому если мы знаем, что некоторые классы реализуют один и тот же интерфейс мы можем использовать этот интерфейс для создания ссылки на все его реализатор классов. Компилятор будет динамически определять, какую реализацию использовать.

Пример интерфейса interface.

//nookery.ru

public interface Const {
    public  int COORDINATE_X=0;
    public int COORDINATE_Y=0;
    int INKRIMENT=1;
    int BALL_X=0;
    int BALL_Y=0;

    void speed(int param); 

    }

class Test implements Const{

  public void speed(int p) {

    System.out.println("Скорость мяча равна=" + p);
  }
}

class Test2 implements Const{
  // Implement Callback's interface
  public void speed(int param) {
    System.out.println("Другой класс");
    System.out.println("Скорость=" + (param));
  }
}

class GL {
  public static void main(String args[]) {
    Const c = new Test();
    Test2 t = new Test2();
    c.speed(34);
    c = t; 
    c.speed(34);
  }
}

Результатом работы программы будет:

Скорость мяча равна=34
Другой класс
Скорость=34

Java интерфейс, сборка блока.

В классе можно реализовать интерфейс но не в полном объеме, то есть реализовать те методы которые вам нужны, для этого вам достаточно объявить класс как абстрактный. Ниже я привел пример такой реализации интерфейса.

//nookery.ru

public interface Const {
    public  int COORDINATE_X=0;
    public int COORDINATE_Y=0;
    int INKRIMENT=1;
    int BALL_X=0;
    int BALL_Y=0;

    void speed(int param); 
    void show();

    }

abstract class Test implements Const{

  public void speed(int p) {

    System.out.println("Скорость мяча равна=" + p);
  }

}

Расширение интерфейса Extend Interface

Один интерфейс может наследовать другой интерфейс с ключевым словом extends.

Скорость мяча равна=34
Другой класс
Скорость=34

Обновлено: 08.04.2017 — 11:29

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.