Java programowanie obiektowe 2

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


Wyszukiwarka

Podobne podstrony:
Zeszyt Java, Programowanie obiektowe i strukturalne, Java
Java Programowanie obiektowe
Java Programowanie obiektowe japrob
Java Programowanie obiektowe 2
wyklad5.cpp, JAVA jest językiem programowania obiektowego
Porebski, Java, J?ZYKI PROGRAMOWANIA OBIEKTOWEGO
Programowanie obiektowe(ćw) 1
Zadanie projekt przychodnia lekarska, Programowanie obiektowe
Programowanie obiektowe w PHP4 i PHP5 11 2005
Programowanie Obiektowe ZadTest Nieznany
Egzamin Programowanie Obiektowe Głowacki, Programowanie Obiektowe
Jezyk C Efektywne programowanie obiektowe cpefpo
Programowanie Obiektowe Ćwiczenia 5
Programowanie obiektowe(cw) 2 i Nieznany
programowanie obiektowe 05, c c++, c#
Intuicyjne podstawy programowania obiektowego0
Programowanie obiektowe, CPP program, 1
projekt01, wisisz, wydzial informatyki, studia zaoczne inzynierskie, programowanie obiektowe, projek
przeciazanie metod i operatorow, Programowanie obiektowe

więcej podobnych podstron