Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych mluckner@mini.pw.edu.pl http://www.mini.pw.edu.pl/~lucknerm
Programy w Javie składają się z pakietów Pakiety zawierają definicje klas i interfejsów Klasa lub interfejs zawarty w pakiecie jest dostępny, kiedy zostanie zadeklarowany jako publiczny public Pakiet sub zadeklarowany jako podpakiet pakietu głównego super będzie oznaczony jako super.sub mluckner@mini.pw.edu.pl 3/5/2014 2
pl.com.neostrada.basia pl.com.plus.lte.basia pl.edu.pw.java.demo pl.edu.pw.java.project pakiet folder 3
Definicja klasy umieszcza ją w hierarchii klas. Klasa definiuje pola i zachowania obiektów. Każdy obiekt musi być instancją klasy. mluckner@mini.pw.edu.pl 3/5/2014 4
abstract public final mluckner@mini.pw.edu.pl 3/5/2014 5
Tylko taka klasa może zawierać metody abstrakcyjne (nie zaimplementowane) Ale może mieć też inne metody Nie można utworzyć instancji takiej klasy Rzucany wyjątek InstantiationException Jest klasą nadrzędną dla innych klas Jeżeli podklasy nadpiszą wszystkie metody abstrakcyjne to nie będą klasami abstrakcyjnymi mluckner@mini.pw.edu.pl 3/5/2014 6
public Klasa dostępna na zewnątrz paietu final Nie może mieć podklas Klasa nie może być jednocześnie finalna i abstrakcyjna mluckner@mini.pw.edu.pl 3/5/2014 7
Może być dokonana bezpośrednio Lub wywodzona z klasy nadrzędnej i interfejsu mluckner@mini.pw.edu.pl 3/5/2014 8
static wspólne dla wszystkich obiektów final brak możliwości nadpisania transient nie jest zapisywane w pamięci stałej volatile pole, które będzie modyfikowane przez wiele wątków 9
Wspólne dla wszystkich instancji klasy (nawet jeżeli takie nie istnieją) Tworzone przed utworzeniem obiektów tylko raz podczas działania aplikacji Inicjalizacja nie może zależeć od niestatycznych pól, które są tworzone podczas tworzenia obiektu Są niezmienne, ale mogą być nadpisane mluckner@mini.pw.edu.pl 3/5/2014 10
abstract Definicja bez implementacji static Metoda wspólna dla wszystkich obiektów final Metoda nie może być nadpisana synchronized Metoda synchronizowana podczas pracy wielowątkowej 11
12
13
Interfejs określa możliwe zachowania Definicja zawiera metody abstrakcyjne i pola statyczne Jedna klasa może mieć wiele interfejsów 14
15
Idea klasy Tylko jedna nadklasa Może zawierać implementację Określa zachowanie klasy Wiele interfejsów Tylko abstrakcyjne metody i pola statyczne abstract class interface mluckner@mini.pw.edu.pl 3/5/2014 16
Wszystkie składowe są publiczne Wszystkie metody są abstrakcyjne Wszystkie pola są statyczne, finalne i publiczne Dlatego modyfikatory są zbędne Za to każde pole musi być zainicjowane 17
Najwyżej w hierarchii jest zawsze klasa Object Klasa podstawowa jest klasą nadrzędną, a wyprowadzana podklasą Klasa może być podklasą tylko jednej klasy nadrzędnej Klasa może implementować wiele interfejsów Instancja klasy jest zarazem instancją wszystkich klas nadrzędnych 18
Klasa może być package (domyślnie) public Elementy klas mogą być public protected private (domyślne) mluckner@mini.pw.edu.pl 3/5/2014 19
W górę hierarchii Od podklasy do klasy nadrzędnej Z klasy do interfejsu Zawsze bezpieczna i automatyczna 20
W dół hierarchii Od klasy nadrzędnej do podklasy Wymaga nadzoru podczas wykonywania i może zgłaszać błędy Określana przez operator zrzutowania mluckner@mini.pw.edu.pl 3/5/2014 21
Exception in thread "main" java.lang.classcastexception: pl.edu.mini.programming3.lecture02.person cannot be cast to pl.edu.mini.programming3.lecture02.employee 22
Point2d p1 = new Point3d(); Point2d jest typem deklarowanym obiektu p1 Point3d is typem aktualnym obiektu p1 23
Metody statyczne są wywoływane dla typu declarowanego Netody niestatyczne są wywoływane dla typu aktualnego Zarówno statyczne jak i niestatyczne pola są odczytywane z typu declarowanego metody pola mluckner@mini.pw.edu.pl 3/5/2014 24
Goodnight, Tom x:10 y:20 25