marți, 6 iulie 2010

De ce un blog cu Java ?

- Fiindcă este un limbaj de programare foarte larg răspândit, se bucură de o comunitate extrem de numeroasă și de activă, dar in limba română nu există foarte multe site-uri cu tutoriale Java.
- 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 {
    Parinte(int i){    //constructor cu parametri
        
//niste cod
    }
}
class Copil extends Parinte{
    Copil(){         
//constructor fara parametri
        //niste cod

    }

}

3 comentarii:

  1. Chiar daca vei inlocui "Copil()" cu "Copil(int i)", codul nu se va compila pentru ca:
    -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

    RăspundețiȘtergere
  2. @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.

    @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...

    RăspundețiȘtergere
  3. Ai dreptate. O alta rezolvare ar fi sa modifici constructorul din clasa Copil, inserand un apel explicit la constructorul cu parametri din clasa Parinte:
    Copil() {
    super(1);
    }

    RăspundețiȘtergere