Интерфейс

Интерфейсът изглежда като клас, но не е клас. Интерфейсът може да има методи и променливи точно като класа, но методите, декларирани в интерфейса, са по подразбиране абстрактни. Също така, променливите, декларирани в интерфейса, са public static final по подразбиране.

Тъй като методите в интерфейсите нямат тяло, те трябва да бъдат имплементирани от клас, преди да се достъпват. Класът, който реализира интерфейса, трябва да имплементира всички методи на този интерфейс. В Java не е позволено наследяване на повече от един клас, но можете да се имплементират повече от един интерфейс от един клас.

interface ExampleInterface {
   /* Всички методи са публични и абстрактни по добразбиране
    * те нямат тяло
    */
   public void method1();
   public void method2();
}
class Demo implements ExampleInterface {
   /* Класовете, който имплементират интерфейса 
    * трябва да реализират методите на интерфейса
    */
   public void method1()
   {
	System.out.println("implementation of method1");
   }
   public void method2()
   {
	System.out.println("implementation of method2");
   }
   public static void main(String arg[])
   {
	MyInterface obj = new Demo();
	obj.method1();
   }
}
class Main {
   public static void main(String arg[])
   {
	MyInterface obj = new Demo();
	obj.method1();
   }
}

Интерфейс и наследяване

interface Inf1 {
   public void method1();
}
interface Inf2 extends Inf1 {
   public void method2();
}
public class Demo implements Inf2 {
   /* Класа имплементиращ интерфейс
    * трябва да имплементира всички методи от интерфейса и
    * неговите родителдски интерфейси
    */
    public void method1(){
	System.out.println("method1");
    }
    public void method2(){
	System.out.println("method2");
    }
    public static void main(String args[]){
	Inf2 obj = new Demo();
	obj.method2();
    }
}

Маркиращи интерфейси

Празният интерфейс е известен като интерфейс за етикет или маркер. Например Serializable, EventListener, Remote(java.rmi.Remote) са интерфейси на маркери. Тези интерфейси нямат поле и методи в себе си. Прочетете повече за това тук.

Важно

  1. Не можем да инстанцираме интерфейс в java. Това означава, че не можем да създадем обект на интерфейс

  2. Интерфейсът осигурява пълна абстракция, тъй като никой от неговите методи няма тяло.

  3. implements ключовата дума се използва от класовете за имплементиране на интерфейс.

  4. За да се осигурява реализация в клас на всеки метод от интерфейс то метода трябва да бъде публичен.

  5. Класът, който имплементира интерфейс, трябва да имплементира всички методи на този интерфейс, в противен случай класът трябва да бъде абстрактен.

  6. Интерфейсът не може да бъде деклариран като private, protected.

  7. Всички методи на интерфейса по подразбиране са абстрактни и публични.

  8. Променливите, декларирани в интерфейса, са public, static and final по подразбиране.

Last updated