2013-07-31 11 views
5

Jak możemy korzystać z metod prywatnego interfejsu w naszym kodzie?Interfejsy prywatne

Klasy abstrakcyjne są czymś, czego nie można utworzyć. Tak więc, jeśli potrzebujemy zastosować metody klasy abstrakcyjnej, możemy je dziedziczyć i używać ich metod.

Ale kiedy mówimy o interfejsach, musimy je wdrożyć, aby użyć ich metod.

Odpowiedz

5

private kluczowe znaczy „ktoś w tej samej klasie”:

public class Foo { 

    private interface X {...} 
    private class X1 implements X {...} 
} 

Oznacza to wszystkie klasy zadeklarowane wewnątrz Foo można użyć interfejsu Foo.X.

Powszechnie stosowanym przykładem jest command pattern, gdzie Foo przyjmuje, na przykład, ciągi i konwertuje je do wewnętrznych obiektów poleceń, które wszystkie implementują ten sam interfejs.

Jeśli dodasz drugą klasę Bar do pliku Foo.java, to nie będzie ona mogła zobaczyć Foo.X.

+1

Mam problem ze zrozumieniem Twojej odpowiedzi. 'wszystkie klasy zadeklarowane wewnątrz Foo.java mogą korzystać z interfejsu Foo.X., więc jeśli utworzę kolejną klasę jak' class Bar' poza klasą 'Foo', ale w' Foo.java' powinna być w stanie zaimplementować 'Foo .X'? – Pshemo

+0

@Pshemo Miałem takie same wątpliwości. – Ashima

+1

@Pshemo: Byłem całkiem pewien, że 'Bar' może używać' Foo.X', ale tak nie jest. Poprawiłem odpowiedź. –

0

Rozszerzasz w ten sam sposób swój prywatny interfejs, jak w przypadku klas. można wdrożyć ten interfejs poza zasięgiem widoczności.