Laboratorium Java – Klasy abstrakcyjne i interfejsy [2h] Klasa

advertisement
Laboratorium Java – Klasy abstrakcyjne i interfejsy [2h]
Klasa abstrakcyjna:
– nie można utworzyć obiektu tej klasy
– może zawierać niekompletną implementację (deklaracje metod)
– nieabstrakcyjna klasa pochodna musi implementować metody abstrakcyjne
abstract class Samochod {
public void hamuje() { }
abstract public void trabi();
}
class Limuzyna extends Samochod {
public void trabi() { }
}
//deklaracja metody
//implementacja metody
Interfejs:
– interfejs – klasa całkowicie abstrakcyjna (bez implementacji)
• elementy publiczne
• pola jako stałe (static final) – konieczna inicjalizacja
• deklaracje metod
public interface Alfabet {
public static final int ALFA = 1;
int BETA = 2; //automatycznie public static final
//deklaracja metody
public void literuj();
}
–
można implementować wiele interfejsów
interface A { }
interface B { }
interface C extends A { } //rozszezanie interfejsu
class X implements B, C { } //implementacja
Klasa wewnętrzna:
– może być private oraz protected
– dostęp do wszystkich elementów klasy zewnętrznej
– rozwiązuje problem braku wielodziedziczenia
class D { }
abstract class E { }
class Y extends D {
class I extends E {
}
}
–
tworzenie obiektu klasy wewnętrznej
Y y = new Y();
Y.I i = y.new I();
–
wewnętrzna klasa statyczna
• nie potrzebuje obiektu zewnętrznego
• brak dostępu do niestatycznych elementów klasy zewnętrznej
Laboratorium Java 07 (Opracowanie: Konrad Kurczyna)
1/2
✔ dziedziczenie klas wewnętrznych
✔ przesłanianie klas wewnętrznych
Klasa anonimowa:
– implementacja interfejsów i klas abstrakcyjnych
class Z extends D {
E make() { return new E() { }; }
}
✔ dostęp do ostatecznych zmiennych lokalnych (final)
Zadanie:
– zaimplementować aplikację z użyciem:
• klas abstrakcyjnych oraz interfejsów
• klas wewnętrznych lub anonimowych
Laboratorium Java 07 (Opracowanie: Konrad Kurczyna)
2/2
Download