background image

 

 

Java

Klasy Javy

background image

 

 

Deklaracja klasy

background image

 

 

Deklaracja

public

Klasa publiczna

abstract

Klasa abstrakcyjna

finall

Końcowa – nie można z niej 

dziedziczyć

class NazwaKlasy

Deklaracja nazwy klasy

extends 
NazwaPrzodka

 Nazwa klasy przodka (klasy, z 
której dziedziczy nasza klasa)

implements 
NazwaInterfejsu

 W Javie klasa może dziedziczyć 
tylko z jednej klasy przodka, a 

może implementować wiele 
interfejsów

background image

 

 

Deklaracja zmiennych (pól)

Modyfikator dostępu

public, private, protcted, package 

static

składowa statyczna - wspólna dla klasy, a 

nie egzemplarza klasy (obiektu)

finall

stała - nie może być modyfikowana

NazwaTypu 

NazwaZmiennej

deklaracja zmiennej - typ + nazwa

background image

 

 

Metody

Funkcje definiowane w obrębie klasy

Modyfikator dostępu – public, private, 

protected

static – metoda klasy. Wywołanie nie 

wymaga instancji obiektu klasy

abstract – metoda abstrakcyjna; nie 

wymaga implementacji w ramach klasy 

(metoda w ramach klasy abstrakcyjnej)

finall – metoda końcowa; nie może być 

pokryta w klasach potomnych

background image

 

 

Przekazywanie parametrów do 
metod

W Javie parametry przekazywane są przez 
wartość. Oznacza to, że:

Jeżeli parametr jest typu prymitywnego, to 
przekazana jest kopia wartości parametru. 
Zmiany dokonywane są na tej kopii.

Jeżeli parametr jest typu referencyjnego (np. 
obiekt), to przekazana jest referencja, za 
pomocą której dokonujemy modyfikacji 
oryginalnego obiektu.

background image

 

 

Ciało metody

Wewnątrz metody możemy zdefiniować zmienne 

lokalne. Mogą się one nazywać tak jak pola w 

klasie w ramach której definiujemy metodę.

Aby odróżnić pole klasy od zmiennej lokalnej 

możemy użyć słowa this

int bok;     

bok = 5; //odwołanie do zmiennej lokalnej

this.bok = 10; // odwołanie do pola (własności) 

// bok

W analogiczny sposób można odwoływać się do 

pól i metod klasy przodka przez słowo super.

super.bok = 5;

background image

 

 

Dziedziczenie

W Javie każda klasa może dziedziczyć tylko z 

jednej klasy (dziedziczenie jednobazowe).

A dziedziczy z B zapisujemy

class A extends B

W drzewie dziedziczenia istnieje korzeń – klasa 

Object zdefiniowana w java.lang, z której 

dziedziczą wszystkie inne klasy.

W klasie Object zostały zaimplementowane 

wszystkie funkcjonalności niezbędne do 

operowania obiektami.

background image

 

 

Co jest dziedziczone ?

Jako zasada – klasa potomna dziedziczy wszystkie 

składniki klasy przodka, które są dostępne dla klasy 

potomnej, o ile nie zostały pokryte w klasie potomnej. 

Nie dziedziczy się konstruktorów.

W klasie potomnej można pokryć składowe klasy 

przodka. Nadal można odwoływać się do składowej 

przodka przez super.

 class A { int liczba; … }

 class B extends A { float liczba; … }

Wewnątrz klasy B można odwołać się do składowej liczba 

typu int

 super.liczba    //oczywiście typu int

Można nadpisać metodę przodka w klasie potomnej 

(adnotacja @override).

Jeżeli klasa potomna nie jest klasą abstrakcyjną, to musi 

nadpisać metody abstrakcyjne przodka.

background image

 

 

Metody klasy Object

 clone() – tworzy kopię obiektu i zwraca do niego referencję

 equals()/hashCode() – w konkretnej klasie nadpisujemy te 

metody, aby zwrócić wartość logiczną stwierdzającą czy nasz 

obiekt jest identyczny z innym

 finallize() – pokrywamy metodę aby „posprzątać” w chwili, 

gdy odśmiecacz zwalnia obiekt. 

 toString() – zwraca reprezentację obiektu w postaci 

łańcucha znaków.

 getClass() – zwraca obiekt reprezentujący klasę obiektu – 

wartość jest typu Class. Wykorzystując metody klasy Class 

można odczytać nazwę klasy obiektu, klasę przidka itd.

background image

 

 

Polimorfizm

W obiektowych językach programowania 

występuje zjawisko polimorfizmu polegające na 

tym, że do zmiennej typu przodka może przypisać 

obiekt klasy potomnej (nic w tym dziwnego – 

zgodność typów), ale jednocześnie wywoływanie 

metod odbywa się na podstawie aktualnego typu 

obiektu, a nie formalnie zadeklarowanego typu 

zmiennej.

Uzyskuje się to dzięki tzw. późnemu wiązaniu 

metod. O tym z jakiej klasy zostanie wywołana 

metoda (potomka czy przodka) decyduje aktualny 

typ zmiennej. Decyzja zapada na etapie 

uruchomienia programu i określenia typu obiektu, 

a nie w czasie kompilacji po zbadaniu formalnego 

typu zmiennej.

background image

 

 

Późne
wiązanie

background image

 

 

Klasy zagnieżdżone

W Javie można wewnątrz definicja jednej klasy 

zdefiniować inną klasę (klasę wewnętrzną)

  class Zewnetrzna {

class Wewnetrzna1 {

…..

}
class Wewnetrzna2 {

…..

}
….

    }

background image

 

 

INTERFESY

Interfejs jest protokołem (opisem) zachowania się obiektów podanym 

poprzez wskazanie zestawu metod i definicji stałych które 

powinny być zaimplementowane w klasie która implementuje 

interfejs.

Interfejs nie określa jak działają metody przez niego opisane (nie ma 

implementacji).  

Klasa nie dziedziczy z interfejsu, lecz może implementować jeden lub 

kilka interfejsów (choć może dziedziczyć tylko z jednej klasy).

Wiele różnych klas nie pozostających względem siebie w żadnych 

związkach dziedziczenia może implementować ten sam interfejs.

Interfejsy mogą pozostawać między sobą w relacji dziedziczenia, tzn. 

jeden interfejs może dziedziczyć z drugiego.

background image

 

 

Postać interfejsu

Interfejs może dziedziczyć z innego 
interfejsu

 public interface A extends B { … }

background image

 

 

Implementacja interfejsu


Document Outline