2015-08-18 3 views
0

После первого использования класса, реализующего интерфейс на Java, и определения методов для этого интерфейса, вам все же необходимо определить методы для этого интерфейса во всех других классах, реализующих этот интерфейс или можете ли вы просто реализовать интерфейс и начать использовать методы интерфейса с объектом из этого класса, даже если методы для этого интерфейса явно не определены в этом классе?Объектно-ориентированные интерфейсы классов

ответ

2

Вам необходимо реализовать методы для каждого класса отдельно, но скажем, например, у вас есть интерфейс «MyInterface» с классом «MyFirstClass», реализующим его и его методы. Если класс «MySecondClass» реализует интерфейс, ему также потребуется реализовать методы. Но если «MySecondClass» расширяет «MyFirstClass», ему не нужно будет реализовывать методы интерфейса, потому что они уже реализованы в «MyFirstClass».

0

Не считая default methods,

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

Учитывая стандартные методы,

Для каждого интерфейса не-абстрактный класс или один из его родительских классов орудий, либо этот класс или один из его или один из его предков классов должны определить все методы этого интерфейса. Если этот не абстрактный класс или один из его или одного из его классов-предков не определяет метод, интерфейс должен определить метод с помощью функции метода по умолчанию.

1

Если класс не является подклассом класса, который уже реализовал интерфейс, вы снова определите все методы. Но если класс является подклассом класса, который уже реализовал интерфейс, не нужно снова определять методы, если вы не хотите переопределить поведение.

1

Так у вас есть

public class Interface { 
    public void someMethod(); 
} 

и реализацию

public class InterfaceImpl implements Interface { 
    public void someMethod() { 
     System.out.println("Hello, world"); 
    } 
} 

Вы можете создать подкласс InterfaceImpl и использовать подкласс Наследование someMethod(). Если InterfaceImpl является абстрактным, то его подкласс должен быть конкретным.

Если у вас есть еще один класс, который не связан с InterfaceImpl (например, не наследуется), то да, что другой класс должен реализовать someMethod() для удовлетворения Interface «s контракт.

2

Для примера у вас есть интерфейс

public Interface A 
{ 

    int add (int a , int b); 

int subtract (int a , int b) 

} 

// Теперь у вас есть класс, который реализует интерфейс

public class AImpl implements A{ 

@override 

public int add() 
{ 
return a+b; 
} 

@override 
public int subtract(){ 

//do something 

} 

} 

Теперь вы хотите, чтобы написать класс C, который использует подобный метод в качестве интерфейса , вы можете либо реализовать этот интерфейс, либо записать реализацию для него в соответствии с вашими потребностями, либо расширить класс AImpl и использовать уже реализованный метод, если он вам подходит. Класс, который реализует интерфейс, должен всегда буквально реализовать все методы этого интерфейса.

Смежные вопросы