Интерфейс
Интерфейсът изглежда като клас, но не е клас. Интерфейсът може да има методи и променливи точно като класа, но методите, декларирани в интерфейса, са по подразбиране абстрактни. Също така, променливите, декларирани в интерфейса, са 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) са интерфейси на маркери. Тези интерфейси нямат поле и методи в себе си. Прочетете повече за това тук.
Важно
- Не можем да инстанцираме интерфейс в java. Това означава, че не можем да създадем обект на интерфейс
- Интерфейсът осигурява пълна абстракция, тъй като никой от неговите методи няма тяло.
- implements ключовата дума се използва от класовете за имплементиране на интерфейс.
- За да се осигурява реализация в клас на всеки метод от интерфейс то метода трябва да бъде публичен.
- Класът, който имплементира интерфейс, трябва да имплементира всички методи на този интерфейс, в противен случай класът трябва да бъде абстрактен.
- Интерфейсът не може да бъде деклариран като private, protected.
- Всички методи на интерфейса по подразбиране са абстрактни и публични.
- Променливите, декларирани в интерфейса, са public, static and final по подразбиране.
###