Pavan,
Все это "Обычно для вызова метода из одного класса в другой" означает, что это "нормальный вызов метода", такой как:
Foo foo = new Foo();
foo.bar(); <<== method invocation
Чтобы вызвать метод, вам нужно знать его сигнатура ... В объектно-ориентированном мире для вызова метода вам не нужно знать как метод работает, вам просто нужно знать его сигнатуру ... т.е. какой метод вызывается, какие параметры он принимает (если есть) и что он возвращает (если есть).
Мы помещаем «как вызвать этот метод» в файл интерфейса, отдельно от файла (ов) класса, который определяет «как работает этот метод» .
НО ПОЧЕМУ ???Реализующий класс может быть создан другим программистом в другой организации через годы после интерфейса.Новый класс будет работать с исходным кодом, потому что он предоставляет ожидаемый интерфейс .
Это немного понятнее?
Cheers Keith.
РЕДАКТИРОВАТЬ: Чтобы продолжить приведенный выше пример ... давайте представим, что третий симпозиум по универсальному формату обмена данными Publicans несколько лет назад опубликовал «стандартный интерфейс» (между напитками), чтобы позволить местным владельцам поддерживатьобщая база данных «проблемных пьющих»:
interface Barable {
void bar();
}
А когда мы выгоняем преданного своему делу покровителя:
class Patron {
void kickOut() {
// ServiceLocator finds a class which implements the Barable interface.
Barable service = ServiceLocator.ByInterface("Barable");
service.bar(); <<-- Invoke it. We don't care HOW it works, or WHO implemented it!
}
}