2013-07-19 5 views
0

Может ли кто-нибудь объяснить, как методы интерфейса используются в классах?Использование метода Inteface (Java)?

Примечание: Мой Сомнение «Методы уже определены в классе, то почему мы должны реализовать?»

Для примера:

interface printable{ 
void print(); 
} 

class A implements printable{ 
public void print(){System.out.println("Hello");} 

public static void main(String args[]){ 
A obj = new A(); 
obj.print(); 
} 
} 

почему печать() объявлена ​​в интерфейсе ??

+2

Разработка. Приведите пример кода. Объясните нам, что именно вы не понимаете. Если вы получаете ошибки компилятора или времени выполнения, полностью скопируйте их и вставьте их. Как и я, я не могу понять, о чем вы спрашиваете. –

+0

Этот вопрос крайне неясен, но если я правильно понимаю, вы ищете объяснение объектно-ориентированного дизайна. Это не сайт для этого. –

+0

@ JB Nizet - можно у, пожалуйста, объясните сейчас. Спасибо – NarutoUzumaki

ответ

4

Вы определяете метод, предоставляя его реализацию. Они - одно и то же, поэтому вы правы, что как только вы определяете метод, вам также не нужно его реализовывать.

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

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

+0

Just добавить: класс 'abstract' может игнорировать реализацию метода' interface'. – tokhi

3

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

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

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

EDIT: В соответствии с вашим примером интерфейс printable определяет, какое поведение должен выполнять класс, который его реализует, в данном случае print.

Это позволит вам что-то сделать по линиям printable p = new A(); p.print();.

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

3

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

+0

@ silverback - вы сказали правильно, но в этом примере программы нам нужен интерфейс? – NarutoUzumaki

2

Определение интерфейса представляет собой разницу между:

public void doSomething(Dog d) 
{ 
    d.doSomething(); 
} 

public void doSomething(Cat c) 
{ 
    c.doSomething(); 
} 

public void doSomething(Giraffe g) 
{ 
    g.doSomething(); 
} 

и

public void doSomething(Animal a) 
{ 
    a.doSomething(); 
} 

Почему?

Ну, если все классы просто реализуют свои собственные методы, между ними нет общей ссылки.Однако, если все они реализуют метод из общего интерфейса, к ним может относиться один и тот же ссылочный тип; в этом случае Animal.

3

@NarutoUzumaki Добро пожаловать в переполнение стека!

Я согласен с Крисом. Вы можете заменить метод doSomething методом eat(), чтобы лучше понять. Собака может есть что-то другое, чем кошка и жираф.

Его до вас, как вы реализуете метод eat, и при его использовании создайте ссылку интерфейса Animal и укажите его на экземпляр Dog, Cat или Giraffe, который когда-либо есть метод, который вы хотите использовать. Это делает ваш дизайн класса очень расширяемым.

Надеюсь, теперь вы получите ясное представление.

+1

Спасибо за ур Добро пожаловать. - Мастер – NarutoUzumaki

+0

, поэтому мне нужно предположить, что интерфейс Animal. – NarutoUzumaki

3

Обычно интерфейс на основе программирования рекомендуется, из-за следующие причины

1) Интерфейс означает правило, вы должны следовать этим правилам при осуществлении этих методов в Реализовано классе.

2) Зависимость меньше между классами, в то время как вы внедряете свой реализованный класс, а затем вызываете свои методы из другого класса или где-нибудь.

3) Вы можете опубликовать данные своего интерфейса, но не нужно раскрывать реализованные детали ваших методов вне мира.

+0

Спасибо за вашу помощь – NarutoUzumaki

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