Объявление interface
Ключевое слово interface объявляет интерфейс - ссылочный тип, содержащий абстрактные методы, константы и, начиная с Java 8, методы по умолчанию и статические методы. Класс, реализующий интерфейс, обязан переопределить все его абстрактные методы. В первом параметре объявления указывается имя интерфейса, во втором - список родителей через extends (если есть), а в теле перечисляются методы и константы.
Синтаксис
public interface Name extends Parent1, Parent2
{
// constants
// abstract methods
// default methods
// static methods
}
Пример
Объявим простой интерфейс Shape с одним абстрактным методом и реализуем его в классе:
public class Main
{
public static void main(String[] args)
{
Shape shape = new Circle(5);
System.out.println(shape.area());
}
}
interface Shape
{
double area();
}
class Circle implements Shape
{
private double radius;
public Circle(double radius)
{
this.radius = radius;
}
@Override
public double area()
{
return Math.PI * radius * radius;
}
}
Результат выполнения кода:
78.53981633974483
Пример
Интерфейс может содержать константы и метод по умолчанию:
public class Main
{
public static void main(String[] args)
{
Greeter greeter = new Greeter();
System.out.println(greeter.greet("World"));
System.out.println(Greeter.PREFIX);
}
}
interface Message
{
String PREFIX = "Hello, ";
String greet(String name);
default String greetTwice(String name)
{
return greet(name) + " " + greet(name);
}
}
class Greeter implements Message
{
@Override
public String greet(String name)
{
return PREFIX + name;
}
}
Результат выполнения кода:
"Hello, World"
"Hello, "
Пример
Класс может реализовать несколько интерфейсов одновременно:
public class Main
{
public static void main(String[] args)
{
Walker walker = new Robot();
walker.walk();
((Swimmer) walker).swim();
}
}
interface Walker
{
void walk();
}
interface Swimmer
{
void swim();
}
class Robot implements Walker, Swimmer
{
@Override
public void walk()
{
System.out.println("walking");
}
@Override
public void swim()
{
System.out.println("swimming");
}
}
Результат выполнения кода:
"walking"
"swimming"
Смотрите также
-
ключевое слово
implements,
которое реализует интерфейс в классе -
ключевое слово
extends,
которое расширяет класс или интерфейс -
метод
default,
который задаёт реализацию по умолчанию -
метод
static,
который объявляет статический метод интерфейса