2015-09-15 4 views
3

Мы знаем, что мы не можем реализовать функции в интерфейсах в java.Реализация в интерфейсе - Java

Я просто попытался

public interface InvoiceService { 

public static void getData(){ 
    System.out.print("this is my data"); 
} 
} 

Я в состоянии выполнить эту функцию, почему это так? это потому, что функция определена как static, а static variables можно получить с помощью имени класса напрямую без создания объекта?

+2

Какой JDK вы используете? –

+0

@ sᴜʀᴇsʜᴀᴛᴛᴀ это 1,8 –

+0

Это новая функция, добавленная в 1.8 :) –

ответ

6

Поскольку вы можете использовать Java 8. В Java 8 вы можете добавлять статические методы в интерфейсы, а также методы по умолчанию. Узнайте больше о статических и стандартных методах в документации по Java 8

+3

Хороший ответ - размещение некоторых примеров кода улучшит ваши шансы на увеличение. – OldCurmudgeon

+0

@OldCurmudgeon Nope. вы не можете сделать это в более старых версиях. –

+0

@ sᴜʀᴇsʜᴀᴛᴛᴀ - К сожалению! Спасибо за хедз-ап. – OldCurmudgeon

1

Это потому, что функция определяется как статические и статические переменные могут быть доступны с использованием имени класса напрямую без создания объекта?

Вы используете Java8, кажется, и вы просто реализовали default method

Да, этот метод не нужно, чтобы ovveride любой из реализованных классов и принадлежит к интерфейсу.

И да, вам не нужно создавать экземпляр для доступа к нему. Вы можете получить к нему доступ по имени интерфейса.

И поскольку это статический метод, который вы можете использовать, что, как и любой нормальный метод полезности

С снова документа,

Если добавить их как статические методы, то программисты будут рассматривать их как методы полезности , а не как основные, основные методы.