Статический метод интерфейса
Статический метод интерфейса объявляется с ключевым словом static
внутри интерфейса. Такой метод принадлежит самому интерфейсу
и не наследуется классами, которые его реализуют. Вызвать его
можно только через имя интерфейса, например MyInterface.method.
Статические методы в интерфейсе не могут быть переопределены
в реализующих классах. В отличие от default-методов,
они не требуют создания экземпляра класса. В первом параметре
такой метод принимает те значения, которые нужны для его логики,
а внутри тела метода можно использовать другие статические
члены интерфейса.
Синтаксис
interface MyInterface
{
static returnType methodName(parameters)
{
// body
}
}
Пример
Давайте создадим интерфейс со статическим методом и вызовем его через имя интерфейса:
public class Main
{
interface MathUtils
{
static int square(int num)
{
return num * num;
}
}
public static void main(String[] args)
{
int res = MathUtils.square(5);
System.out.println(res);
}
}
Результат выполнения кода:
25
Пример
Давайте проверим, что статический метод не наследуется реализующим классом, и вызовем его только через интерфейс:
public class Main
{
interface Greetable
{
static String greet(String name)
{
return "Hello, " + name;
}
}
static class User implements Greetable
{
}
public static void main(String[] args)
{
String res = Greetable.greet("abcde");
System.out.println(res);
}
}
Результат выполнения кода:
"Hello, abcde"
Пример
Давайте используем статический метод интерфейса для создания объекта и передачи его в другой метод:
public class Main
{
interface Factory
{
static String create()
{
return "abcde";
}
}
static void print(String value)
{
System.out.println(value);
}
public static void main(String[] args)
{
print(Factory.create());
}
}
Результат выполнения кода:
"abcde"
Смотрите также
-
ключевое слово
static,
которое делает член класса или интерфейса статическим -
interface,
который объявляет интерфейс -
default-метод,
который имеет реализацию по умолчанию -
private-метод интерфейса,
который доступен только внутри интерфейса