2015-06-26 2 views
0

Некоторая путаница с использованием интерфейса в качестве типа для создания объекта класса. Зачем нам нужен интерфейс как тип? Когда мы можем использовать класс вместо этого? Так как класс все равно реализует интерфейс. Я знаю, что вы не можете создать интерфейс.Использование типа интерфейса для создания объекта класса, реализующего интерфейс

Большое спасибо за любые предложения,

public interface SortRecords { 
     int query(int rowId); 
    } 

    public class OurPrice implements SortRecords { 
     @Override 
     public int query(int rowId) { 
      return 0; 
     } 
    } 

    public void test() { 
     /* 
     * Why has the interface as the type? 
     */ 
     SortRecords sorterV1 = new OurPrice(); 
     sorterV1.query(1); 

     /* 
     * Why not just do like this? 
     */ 
     OurPrice sorterV2 = new OurPrice(); 
     sorterV2.query(2); 
    } 
+0

что, если существует другой '' class'' реализующий '' '' SortRecords и т.д .: '' класс TheirPrice общественного реализующий SortRecords {...} ''? –

ответ

5

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

В приведенном выше примере это не особенно полезно. Однако в более широком контексте фабрика может предоставить вам любую реализацию, которая им нравится (даже во время выполнения). Как потребитель, вам не нужно беспокоиться. Вы просто общаетесь, используя интерфейс и контракт (методы), которые он предоставляет.

1

основы полиморфизма.

читать здесь http://www.artima.com/objectsandjava/webuscript/PolymorphismInterfaces1.html

+1

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

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