Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  

CATEGORII DOCUMENTE





AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Extinderi de clase, clase componente, mostenire

java

+ Font mai mare | - Font mai mic







DOCUMENTE SIMILARE

Trimite pe Messenger
DISPUNEREA COMPONENTELOR UNEI INTERFETE
Exceptii program in Java
Fereastra cu butoane in Java
INCARCAREA SI FOLOSIREA IMAGINILOR
Java si XML - Fisiere XML in aplicatii Java
ATRIBUIREA UNEI VALORI
ATRIBUTE SI COMPORTAMENT
Constructori
Comentarii
CASETE DE VALIDARE

Extinderi de clase, clase componente, mostenire

          Java permite doua mecanisme de folosire a facilitatilor unei clase in interiorul alteia : clasa componenta si clasa care extinde (mosteneste) alta clasa.



          O clasa componenta apare atunci cand in interiorul unei clase se foloseste o variabila de tipul altei clase.

Exemplul 4

import java.io.*;

public class Salariat

          public Persoana(String nume, int virsta, int sectie, float salariu)

          public String getNume()

          public int getVirsta()

          public int getSectie()

public float getSalariu()

          public void list()

          public static void main (Stringas args)

         

}

          Clasa Persoana este clasa componenta in clasa Salariat. Desi este intalnita in programe, facilitatea clasei componente are unele inconveniente. Metodele getNume() si getVirsta() folosesc serviciile cu acelasi nume din clasa Persoana prin intermediul instantei pers. Aceast aspect pare cam fortat desi nu este un inconvenient. Situatia se schimba atunci cand observam cazul primului salariat care se instantiaza prin intermediul constructorului fara parametri. In interiorul acestuia se instantiaza variabila pers prin constructorul fara parametri al clasei Persoana. Datorita limitarilor functionale din clasa Persoana nu vom putea seta numele si varsta acestui salariat cu alte valori. Vor ramane cele implicit stabilite in clasa Persoana.

          In cazul celor doua tipuri de date Persoana si Salariat solutia eleganta este oferita de mecanismul de extindere de clasa. Folosind cuvantul cheie extends vom defini clasa Salariat ca extensie a clasei Persoana. Spunem ca Salariat este subclasa a clasei Persoana sau ca aceasta este supraclasa a clasei Salariat. Noua clasa va mosteni toti membrii clasei Persoana. Pentru a avea acces nemijlocit in clasa Salariat asupra variabilelor mostenite nume si virsta este necesar sa schimbam in clasa Persoana modificatorul de acces al acestora din private in protected. Cu aceasta precizare, clasa Salariat arata astfel,

Exemplul 5

import java.io.*;

public class Salariat

          public Persoana(String nume, int virsta, int sectie, float salariu)

          public String getNume()




          public int getVirsta()

          public int getSectie()

public float getSalariu()

public void setNume(String nume)

public void setVirsta(int virsta)

public void setSectie(int sectie)

public void setSalariu(float salariu)

          public void list()

          public static void main (Stringas args)

         

}

          Se observa ca o parte dintre instructiunile primului constructor Salariat() coincid cu instructiunile primului constructor Persoana(). Pentru a evita astfel de duplicari, Java permite apelul constructorului supraclasei in cadrul constructorului subclasei folosind cuvantul cheie super, dupa cum se vede in al doilea constructor Salariat(). Singura restrictie este ca super sa fie  primul apel in cadrul noului constructor.

          Metodele getNume() si getVirsta()  suprascriu pe cele din clasa Persoana prin simplul apel al acestora folosind super.  Metoda list() o suprascrie pe cea din clasa Persoana dar adauga si o noua instructiune.

          In Java este permisa mostenirea multipla, spre exemplu clasa C mosteneste (extinde) clasa B care mosteneste clasa A. Fie x un nume de variabila intalnit in fiecare clasa. Atunci, in clasa C sunt posibile referirile,

this.x  refera x din C

          super.x        refera x din B

          ((B)this).x refera x din B

          ((A)this).x refera x din A

          Daca o clasa este declarata cu atributul final atunci ea nu mai poate fi extinsa. Opusul acestui atribut este abstract.








Politica de confidentialitate

DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 399
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2019 . All rights reserved

Distribuie URL

Adauga cod HTML in site