Referat Laborator 4
Referat Laborator 4
Tipul referinţă;
Clase, câmpuri, metode;
Constructori;
Moştenirea şi polimorfismul;
Pachete de clase;
Pachetul java.lang;
Clase: Class, Math, System;
Tablouri uni şi bi-dimensionale;
Exemplu ClasaParinte.java, ClasaCopil.java, TestConstructori.java
class ClasaParinte{
int i; char c;
/*ClasaParinte(){
i=3; c='r';
}*/
public String toString(){
return "ClasaParinte="+i+" "+c;
}
public static void main(String args[]){
ClasaParinte p1,p2;
p1=new ClasaParinte(); p2=new ClasaParinte();
System.out.println("p1="+p1);
System.out.println("p2="+p2);
}
}
class TestObject {
public static void main(String argv[]) {
Object ob1=new Object(), ob2=new String("ABCD"), ob3="abcd", ob4=ob2;
Object ob5=new Object(), ob6=ob5;
String str1="ABCD", str2=str1;
System.out.println("ob1="+ob1);
System.out.println("ob2="+ob2);
System.out.println("ob3="+ob3);
System.out.println("str1="+str1);
System.out.println("Coduri de dispersie:");
System.out.println("ob1: "+ob1.hashCode());
System.out.println("ob5: "+ob5.hashCode());
System.out.println("ob2: "+ob2.hashCode());
System.out.println("str1: "+str1.hashCode());
System.out.println("ob4: "+ob4.hashCode());
System.out.println("ob3: "+ob3.hashCode());
System.out.println("Testarea egalitatii prin == si prin equals():");
/* Pentru obiecte din clasa String operatorul == testeaza egalitatea referintelor, in timp ce metoda equals()
testeaza egalitatea continutului“ */
System.out.println("ob2==ob4: "+(ob2==ob4)+" ob2.equals(ob4): "+
(ob2.equals(ob4)));
System.out.println("ob2==str1: "+(ob2==str1)+" ob2.equals(str1): "+
(ob2.equals(str1)));
System.out.println("ob2==ob3: "+(ob2==ob3)+" ob2.equals(ob3): "+
(ob2.equals(ob3)));
/* De altfel, daca un obiect apare ca argument in metoda print() sau println(), aplicarea conversia lui in sir
(deci aplicarea metodei toString() se face in mod implicit */
System.out.println(ob1); System.out.println(ob2);
System.out.println(ob3); System.out.println(str1);
/* Unei variabile din clasa Object i se poate atribui o referinta la un obiect din clasa String, deci
instructiunea urmatoare nu produce o
eroare de compilare */
ob1=str2;
/* Unei variabile din clasa String nu i se poate atribui o referinta la un obiect din clasa Object. In consecinta,
daca se elimina // din
linia de program urmatoare, apare o eroare la compilare */
// str1=ob2;
/* Daca insa suntem siguri ca variabila ob2 din clasa Object contine in realitate o referinta la un obiect din
clasa String (asa cum este cazul in situatia de fata) putem cere o conversie explicita de la Object la String. Din
aceasta cauza, instructiunea urmatoare nu mai constituie o eroare */
str1=(String)ob2;
class ProdPapetarie{
String nume;
float pret;
String culoare;
ProdPapetarie(){
nume="nimic";
pret=0.0f;
culoare="negru";
}
public String toString(){
return "Produs - "+nume+" costa "+pret+" are culoarea "+culoare;
}
}
Stilou.java
package librarie;
Stilou(){
super();
rezerva=true;
marca="oricare";
}
public String toString(){
return super.toString()+"\n \t"+marca+" "+rezerva+" are rezerva";
}
}
TestLibrarie.java
package librarie;
class TestLibrarie{
public static void main(String[] args){
ProdPapetarie p1,p2,p3;
Stilou s1,s2;
p1=new ProdPapetarie();
s1=new Stilou();
System.out.println(p1);
System.out.println(s1);
}
}