- Fiindcă vreau să împărtășesc o parte din experiența mea (nu foarte bogată, dar în continuă creștere) cu cei interesați de limbajul/tehnologia Java. Postările mele vor avea, cel mai adesea, caracterul de "temă de gândire", cu răspuns destul de evident, dar nu "mură in gură".
- Fiindcă, deși exista o sumedenie de biblioteci, framework-uri, plugin-uri (de la Sun, sau third-party), un programator nu are nevoie doar de tool-uri complexe, ci și de o bună înțelegere a limbajului, cu capcanele, punctele forte și slăbiciunile lui.
Așa cum probabil ați ghicit deja, acest blog va pune accent pe fundamentele limbajului Java. El se adresează celor care fac acum - sau au făcut deja - primii pași in Java, fără a se considera încă experți.
Iată deci o primă tema de gândire:
/**
* Se compileaza codul de mai jos?
* Dar daca inlocuiti "Copil()" cu "Copil(int i)" ?
* Care este explicatia?
*/
class Parinte {
* Se compileaza codul de mai jos?
* Dar daca inlocuiti "Copil()" cu "Copil(int i)" ?
* Care este explicatia?
*/
class Parinte {
Parinte(int i){ //constructor cu parametri
//niste cod
}
}
//niste cod
}
}
class Copil extends Parinte{
Copil(){ //constructor fara parametri
//niste cod
}
}
Copil(){ //constructor fara parametri
//niste cod
}
}
Chiar daca vei inlocui "Copil()" cu "Copil(int i)", codul nu se va compila pentru ca:
RăspundețiȘtergere-in clasa Parinte, compiler-ul nu va crea automat cu constructor fara parametri, pentru ca este deja unul cu parametri.
-in clasa Copil, nu exista un call explicit catre un constructor (ar trebui inserat in prima linie din constructor) si compiler-ul va incerca sa creeze el un call catre constructorul fara parametri din clasa Parinte, dar acest constructor nu exista..
Problema se poate rezolva creand un contructor fara parametri in clasa Parinte:
Parinte() {}
Ce zici ?
Merci,
Roxana
@Roxana: da, este o soluție posibilă; totuși într-o situație reală s-ar putea să nu ai acces / drepturi pentru modificarea clasei Parinte, și atunci nu rămâne decât să adaptezi clasa Copil.
RăspundețiȘtergere@Antares: mersi moșule, dar mă tem că pentru domeniul tău de interes, Java nu se va ridica prea curând la înălțimea așteptărilor...
Ai dreptate. O alta rezolvare ar fi sa modifici constructorul din clasa Copil, inserand un apel explicit la constructorul cu parametri din clasa Parinte:
RăspundețiȘtergereCopil() {
super(1);
}