CATEGORII DOCUMENTE |
Ca o scurta recapitulare prezentam mai jos o definitie de clasa:
class Stiri
In mod prestabilit toate clasele mostenesc clasa Object, care este superclasa tuturor claselor din ierarhia Java.
Daca respectiva noastra clasa este o subclasa folosim cuvantul cheie extends pentru a indica superclasa noii clase:
class StiriSportive extends Stiri
Atunci cand cream o clasa care mosteneste o superclasa trebuie precizat comportamentul noii clase, care o face sa difere de superclasa sa.Acest comportament este definit prin specificarea variabilelor si metodelor noii clase.
Variabilele de instanta sunt declarate si definite cam la fel cu variabilele locale.Principala diferenta consta in localizarea acestora in cadrul clasei, in afara metodelor, ca in exemplul de mai jos:
class Jabberwock extends Reptile
Variabilele sunt folositoare
atunci cand avem nevoie sa pastram informatii ce vor fi modificate pe parcursul
rularii programului.Daca valoarea nu se schimba niciodata pe parcursul
executiei programului putem folosi un tip special de variabila, numit
O
Constantele se folosesc pentru definirea valorilor comune pentru toate metodele unui obiect, cu alte cuvinte, pentru denumirea unor valori ce nu se vor schimba in cadrul obiectului.In Java putem crea constante pentru toate tipurile de variabile:de instanta, de clasa sau locale.
Pentru a declara o
final float pi=3.1415;
final booleandebug=false;
final int telefon=8675309;
Constantele pot fi folositoare pentru denumirea diferitelor stari ale unui obiect sau pentru testarea acestor stari.Folosirea constantelor usureaza de cele mai multe ori intelegerea programului.
Acestea se aplica unei clase in intregul sau (dupa cum am vazut si in cursurile precedente), nefiind stocate individual in obiectele (instantele) clasei.
Variabilele de clasa folosesc la comunicarea intre diferite obiecte ale aceleiasi clase sau pentru pastrarea unor informatii comune la nivelul intregii clase.
Pentru a declara o variabila de clasa se foloseste cuvantul cheie static, ca mai jos:
static int suma;
static final int maxObiecte=10;
Metodele definesc comportamentul unui obiect - actiunile efectuate la crearea obiectului sau pe parcursul duratei sale de viata.
Aceasta cuprinde patru parti:
- numele metodei
- tipul obiectului sau tipul de date primitiv returnat de metoda
- o lista de parametri
- corpul metodei
Primele trei parti ale unei definitii de metoda formeaza ceea ce se numeste semnatura metodei.
In definirea metodei mai exista si doua alte parti optionale:un modificator (cuvintele cheie public sau private) si cuvantul cheie throws (care indica exceptiile pe care le poate semnala metoda).
In alte limbaje numele metodei - numita si functie, subrutina sau procedura - este suficient pentru a o distinge fata de celelalte metode din program.
In Java, in aceeasi clasa putem folosi mai multe metode cu acelasi nume, dar care difera prin valoarea returnata sau prin lista de parametri.Aceasta practica este denumita supraincarcarea metodei (overloading).
Mai jos putem vedea o definitie generala a unei metode:
tipRetur numeMetoda(tip1 argument1, tip2 argument2, .)
tipRetur poate fi un tip primitiv, un nume de clasa sau cuvantul cheie void, atunci cand metoda nu returneaza o valoare.
In cazul in care metoda returneaza un obiect tablou, trebuie folosite parantezele patrate fie dupa tipRetur fie dupa lista de parametri:
int[] creareDomeniu(int inf, int sup)
Lista de parametri a metodei este un set de definitii de variabile, separate prin virgula si incadrate intre paranteze rotunde.Acesti parametri devin variabile locale in corpul metodei, primind valori la apelarea metodei.
In afara cazurilor cand este declarata cu tipul de retur void, o metoda returneaza la terminarea sa o valoare de un anumit tip.Aceasta valoare trebuie specificata explicit in punctele de iesire ale metodei, prin cuvantul cheie return.
In listingul de mai jos avem un exemplu de clasa care defineste o metoda care preia doi intregi si creaza un tablou care contine toate numerele intregi aflate intre cele doua limite:
class ClasaDomeniu
return tabl;
}
public static void main(String argumente[])
}
Metoda main() a clasei apeleaza metoda creareDomeniu() prin crearea unui domeniu marginit inferior, respectiv superior, de valorile 1 si 10, dupa care foloseste un ciclu for pentru a afisa valorile noului tablou.
In corpul unei definitii de metoda putem sa ne referim la obiectul curent - obiectul a carei metoda a fost apelata.Aceasta poate avea scopul de a folosi variabilele de instanta ale obiectului sau de a transmite obiectul curent ca argument unei alte metode.
Pentru a referi obiectul curent in astfel de cazuri se foloseste cuvantul cheie this acolo unde in mod normal s-ar folosi numele unui obiect.
Acest cuvant cheie se refera la obiectul curent si poate fi folosit oriunde poate aparea un obiect:in notatia cu punct, ca argument al unei metode, ca valoare de retur pentru metoda curenta s.a.m.d.Mai jos avem un exemplu de folosire a lui this:
t=this.x; // variabila de instanta x pentru acest obiect
this.resetDate(this); // apeleaza metoda resetDate() definita in clasa curenta si
// transmite obiectul curent
return this; // returneaza obiectul curent
In multe cazuri s-ar putea sa nu fie nevoie sa utilizam explicit cuvantul cheie this, deoarece este presupus.De exemplu, putem sa ne referim atat la variabilele de instanta cat si la apelurile de metode definite in clasa curenta prin simpla folosire a numelui lor, deoarece this este implicit folosit in aceste referinte:
t=x; // variabila de instanta x pentru acest obiect
resetDate(this); // apeleaza metoda resetDate() definita in clasa curenta si
// transmite obiectul curent
Deoarece this este o referinta a instantei curente a clasei trebuie sa o folosim doar in cadrul corpului unei definitii de metoda de instanta.Metodele de clasa, declarate prin cuvantul cheie static, nu pot folosi this.
Domeniul de vizibilitate este acea parte a programului in care o variabila sau o alta informatie poate fi folosita.Daca acea parte a programului care defineste domeniul de vizibilitate al unei variabile isi termina executia variabila nu mai exista.
O variabila cu domeniu de vizibilitate local poate fi folosita doar in cadrul blocului in care a fost definita.Variabilele de instanta si de clasa poseda un domeniu de vizibilitate extins la intreaga clasa, deci ele pot fi accesate de oricare dintre metodele din cadrul clasei.
Atunci cand referim o variabila in cadrul unei metode, Java verifica definitia acesteia mai intai in domeniul de vizibilitate local, dupa aceea in domeniul exterior imediat urmator si, in cele din urma, in domeniul metodei curente.Daca variabila nu este locala Java verifica existenta unei definitii a acesteia ca variabila de instanta sau de clasa in clasa curenta.Daca Java tot nu gaseste definitia variabilei ocauta pe rand in fiecare superclasa.
Atunci cand apelam o metoda cu parametri obiect, obiectele sunt transmise in corpul metodei prin referinta.Orice vom face cu obiectele in cadrul metodei le va afecta direct.Aceste obiecte pot fi tablouri si alte obiecte continute in tablouri.Atunci cand transmitem un tablou ca argument intr-o metoda si continutul lui se modifica, este afectat tabloul original.
Pe de alta parte trebuie sa mentionez ca tipurile de date primitive sunt transmise prin valoare.
Relatia dintre variabilele de instanta si cele de clasa este comparabila cu diferenta dintre modurile de lucru ale metodelor de instanta si de clasa.
Metodele de clasa sunt disponibile oricarei instante a clasei si pot fi facute disponibile altor clase.In plus, spre deosebire de o metoda de instanta, o clasa nu necesita o instanta a clasei pentru a-I putea fi apelate metodele.
De exemplu, bibliotecile Java contin o clasa denumita Math.Clasa Math defineste un set de operatii matematice pe care le putem folosi in orice program sau pentru diferite tipuri numerice:
float radical=Math.sqrt(453.0);
System.out.println("Cel mai mare dintre x si y este:"+Math.max(x,y));
Pentru a defini metode de clasa se foloseste cuvantul cheie static, pozitionat in fata definitiei metodei, la fel ca in cazul definirii variabilelor de clasa.De exemplu, metoda de clasa max(), folosita in exemplul precedent, ar putea avea urmatoarea semnatura:
static int(int arg1, int arg2)
Java contine clase de impachetare (wrapper) pentru fiecare dintre tipurile de baza.
Lipsa cuvantului cheie static din fata numelui unei metode face ca aceasta sa fie o metoda de instanta.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1176
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved