Множественная реализация интерфейсов
Множественная реализация интерфейсов позволяет
классу реализовывать сразу несколько интерфейсов
одновременно. Для этого после ключевого слова
implements перечисляются имена интерфейсов
через запятую. В первом параметре (первом имени)
мы указываем первый интерфейс, во втором -
второй интерфейс и так далее. Класс обязан
реализовать все абстрактные методы всех
перечисленных интерфейсов, иначе он должен
быть объявлен как abstract.
Синтаксис
public class ClassName implements Interface1, Interface2, Interface3
{
// implementation of all abstract methods
}
Пример
Давайте создадим два интерфейса Flyable
и Swimmable и класс Duck,
который реализует оба интерфейса:
interface Flyable
{
void fly();
}
interface Swimmable
{
void swim();
}
public class Main
{
public static void main(String[] args)
{
Duck duck = new Duck();
duck.fly();
duck.swim();
}
}
class Duck implements Flyable, Swimmable
{
public void fly()
{
System.out.println("Flying");
}
public void swim()
{
System.out.println("Swimming");
}
}
Результат выполнения кода:
"Flying"
"Swimming"
Пример
Давайте создадим три интерфейса A,
B и C и класс MyClass,
который реализует все три интерфейса:
interface A
{
void methodA();
}
interface B
{
void methodB();
}
interface C
{
void methodC();
}
public class Main
{
public static void main(String[] args)
{
MyClass obj = new MyClass();
obj.methodA();
obj.methodB();
obj.methodC();
}
}
class MyClass implements A, B, C
{
public void methodA()
{
System.out.println("A");
}
public void methodB()
{
System.out.println("B");
}
public void methodC()
{
System.out.println("C");
}
}
Результат выполнения кода:
"A"
"B"
"C"
Пример
Давайте создадим интерфейсы с константами и класс, реализующий оба интерфейса, чтобы показать, что константы наследуются из всех интерфейсов:
interface Constants1
{
int A = 1;
}
interface Constants2
{
int B = 2;
}
public class Main
{
public static void main(String[] args)
{
MyClass obj = new MyClass();
System.out.println(obj.A);
System.out.println(obj.B);
}
}
class MyClass implements Constants1, Constants2
{
}
Результат выполнения кода:
1
2
Смотрите также
-
ключевое слово
implements,
которое указывает реализуемые интерфейсы -
раздел
interface,
который описывает создание интерфейсов -
раздел
default-методы,
которые можно не переопределять -
раздел
наследование,
которое дополняет реализацию интерфейсов