CATEGORII DOCUMENTE |
Tipuri clasa si tipuri referinta
O clasa este o structura care poate contine atat date cat si functii ca membri ai structurii. In Java nu mai exista cuvantul cheie struct , iar definirea unei clase foloseste cuvantul cheie class. Se pot defini clase ce contin numai date publice, echivalente structurilor din limbajele C si C++. Exemplu:
public class Point
// creare si utilizare obiect din clasa 'Point'
Point a = new Point(); // constructor implicit, generat automat
a.x=2.; a.y =-3; // un punct in cadranul 4
In practica se prefera ca variabilele clasei 'Point' sa fie de tip private (inaccesibile unor metode din alte clase) si ca initializarea lor sa se faca in constructorul clasei:
public class Point
}
Clasele (neabstracte) Java sunt de doua categorii:
- Clase instantiabile, care pot genera obiecte, care contin date si metode (ne-statice).
- Clase neinstantiabile , care contin doar metode statice (si eventual constante).
O metoda statica corespunde unei functii din limbajul C, cu diferenta ca numele functiei trebuie precedat de numele clasei din care face parte. Exemple:
double xabs = Math.abs(x); // valoarea absoluta a lui x
double y = Math.sqrt(x); // radical din x
int n = Integer.parseInt (str); // conversie sir 'str' la tipul 'int'
Definirea unei clase instantiabile T creeaza automat un nou tip de date T. Un obiect de tip T este o instantiere a clasei T si este referit printr-o variabila de tip T. Clasa Java cu numele String defineste un tip de date String, ce poate fi folosit in declararea de variabile, vectori sau functii de tip String. Exemple:
String msg = 'Eroare'; // o variabila sir
String tcuv[] =; // un vector de siruri
Un obiect Java corespunde unei variabile structura din C, iar o variabila de un tip clasa corespunde unei variabile pointer la o structura din C.
In Java toate obiectele sunt alocate dinamic, folosind operatorul new, iar variabila de tip clasa trebuie initializata cu rezultatul operatorului new. Exemplu:
String mesaj; // String este o clasa predefinita
mesaj = new String (" Eroare ! ") ; // alocare memorie pentru sir
Pentru constantele de tip String se creeaza obiecte automat, de catre compilator, ale caror adrese pot fi folosite in atribuiri sau initializari la declarare. Exemple:
System.out.println ('Eroare !');
String msg; msg = ' Corect';
Clasa String contine mai multe metode (functii) publice, utilizabile in alte clase. De exemplu, metoda length, fara argumente, are ca rezultat (intreg) lungimea sirului continut in obiectul de tip String pentru care se apeleaza metoda. Exemplu:
int len = mesaj.length();
Acest exemplu arata ca membrii unei clase se folosesc la fel cu membrii unei structuri, indiferent ca ei sunt variabile (campuri) sau functii (metode).
Un alt exemplu este o constructie mult folosita in Java pentru afisarea la consola (in mod text) a unor siruri de caractere:
System.out.println (mesaj);
System.out.println ( " Eroare ");
In aceste exemple System este numele unei clase predefinite, out este numele unei variabile publice (din clasa System) de un tip clasa (PrintStream), iar println este numele unei metode din clasa PrintStream.
Numele unei metode poate fi precedat de numele unei variabile clasa sau de numele unei clase, dar intotdeauna caracterul separator este un punct. Este uzual in Java sa avem denumiri de variabile sau de metode care contin cateva puncte de separare a numelor folosite in precizarea contextului. Exemple:
if ( Character.isDigit ( str.charAt(0)) ) . . . // daca primul caracter e o cifra
System.out.println (obj + obj.getClass().getName());
int maxdigits= (Integer.MAX_VALUE+'').length();
O referinta la un tip clasa T este de fapt un pointer la tipul T dar care se foloseste ca si cum ar fi o variabila de tipul T. Indirectarea prin variabila referinta este realizata automat de compilator, fara a folosi un operator special, ca in C .
Tipul referinta a fost introdus in C++ in principal pentru a declara parametri modificabili in functii, cu simplificarea scrierii si utilizarii acestor functii.
In Java nu trebuie folosita o sintaxa speciala pentru declararea de variabile sau de parametri referinta, deoarece toate variabilele de un tip clasa sunt automat considerate ca variabile referinta. Nu se pot defini referinte la tipuri primitive.
O
variabila referinta Java nu este un obiect, dar contine adresa unui obiect
alocat dinamic. O variabila referinta apare de obicei in stanga unei atribuiri
cu operatorul new sau cu
Vector a = new Vector( ); // a = variabila referinta la un obiect de tip Vector
Atunci cand se apeleaza o metoda pentru un obiect, se foloseste numele variabilei referinta ca si cum acest nume ar reprezenta chiar obiectul respectiv si nu adresa sa. Exemplu:
System.out.println ( a.size() ); // afisare dimensiune vector a
Operatorul de concatenare '+', folosit intre obiecte de tip String, poate crea impresia ca variabilele de tip String contin chiar sirurile care se concateneaza si nu adresele lor. Exemple:
String
s1='java.', s2='util.', s3='
System.out.println (s1+s2+s3); // scrie java.util.Rand
Operatorul de concatenare "+" este singurul operator "supradefinit" in Java si el poate fi utilizat intre operanzi de tip String sau cu un operand de tip String si un alt operand de orice tip primitiv sau de un tip clasa (pentru care exista o functie de conversie la tipul String ). Exemplu:
int a=3, b=2 ;
System.out.println ( a + "+" + b + "=" + (a+b)); // scrie: 3 + 2 = 5
Efectul operatorului '+' depinde de tipul operanzilor: daca unul din operanzi este de tip String atunci este interpretat ca operator de concatenare iar rezultatul este tot String.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1405
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved