Creare subclase cu extends

In JavaScript se pot crea subclase (ca o clasa copil al altei clase, denumita parinte) folosind cuvantul: extends.
Subclasa mosteneste si poate extinde proprietatile si metodele din clasa parinte.
Daca subclasa nu are constructor(), va folosi metoda constructor() din clasa parinte.

- Exemplu:
<div id='ex_res'>Shows response</div>

<script>
//Clasa parinte
class User {
 constructor(name){
 //seteaza proprietate
 this.name = name;
 }

 //metoda
 sayHi(){
 return 'Hello '+ this.name;
 }
}

//Subclasa
class Gamer extends User {
 //metoda foloseste proprietatea name definita in clasa parinte
 sayBye(){
 return 'Goodbye '+ this.name;
 }
}

//Utilizare

//creaza un obiect al subclasei
//transmite un argument deoarece foloseste constructor() din clasa parinte
let ob_gbr = new Gamer('MarPlo');

//apeleaza metoda sayHi() definita in clasa parinte (User)
var hi = ob_gbr.sayHi();

//apeleaza metoda definita in subclasa
var bye = ob_gbr.sayBye();

//adauga valorile de la 'hi' si 'bye' in Div #ex_res
document.getElementById('ex_res').innerHTML ='<h3>'+hi+'<br>'+bye+'</h3>';
</script>

Clase JS - Mostenire, super

Subclasa mosteneste proprietatile si metodele definite in clasa parinte (inclusiv metodele statice).
Daca exista constructor() in subclasa, inainte de a folosi cuvantul "this" se aplica: super().
Pentru a rescrie proprietati si metode din clasa parinte, se definesc iar in subclasa.

- Exemplu:
<div id='ex_res'>Shows response</div>

<script>
//Clasa parinte
class Parent {
 constructor(name){
 //seteaza proprietate
 this.name = name;
 }

 //metoda
 sayHi(){
 return 'Hello '+ this.name;
 }
}

//Subclasa
class Child extends Parent {
 constructor(name){
 //aplica super ca sa includa constructor() din clasa parinte, transmitand argumentul necesar
 super(name);

 //aici se pot rescrie sau adauga proprietati noi

 this.site ='CoursesWeb.net';
 }

 //rescrie metoda din parinte
 sayHi(){
 return 'From Subclass, site: '+ this.site +'<br>Hello '+ this.name;
 }
}

//Utilizare

//creaza un obiect al subclasei Child
let obj = new Child('MarPlo');

//apeleaza metoda sayHi(), rescrisa in clasa copil
var hi = obj.sayHi();

//afisaza valoarea de la 'hi' in Div #ex_res
document.getElementById('ex_res').innerHTML ='<h2>'+hi+'</h2>';
</script>

Metode de clase si super

Cuvantul super se foloseste pentru a apela metodele corespunzatoare din clasa de baza (parinte). Se foloseste cand nu se vrea rescrierea completa a unei metode, ci adaugarea de instructiuni noi la cele deja existente in metoda din clasa de baza.
Clasele furnizeaza cuvantul "super" pentru:
- Exemplu:
<div id='ex_res'>Shows response</div>

<script>
//Clasa parinte
class Parent {
 constructor(name){
 //seteaza proprietate
 this.name = name;
 }

 //metoda
 sayHi(){
 return 'Hello '+ this.name;
 }
}

//Subclasa
class Child extends Parent {
 constructor(name, site){
 //aplica super ca sa includa constructor() din clasa parinte, transmitand argumentul necesar
 super(name);

 //aici se pot rescrie sau adauga proprietati noi
 this.site = site;
 }

 //refoloseste metoda din parinte
 sayHi(){
 var hi = super.sayHi(); //retine datele returnate de metoda

 //aici se pot adauga noi instructiuni

 return hi +'<br>From: '+ this.site;
 }
}

//Utilizare

//creaza un obiect al subclasei Child
let obj = new Child('MarPlo', 'CoursesWeb.net');

//apeleaza metoda sayHi() redefinita in clasa copil
var hi = obj.sayHi();

//afisaza valoarea de la 'hi' in Div #ex_res
document.getElementById('ex_res').innerHTML ='<h2>'+hi+'</h2>';
</script>

super la metode statice

Instructiunea "super" se poate aplica si la metode statice.
- Exemplu:
<script>
//clasa de baza
class Parent {
 //metoda statica
 static sayHi(name){
 alert('Hello '+ name +' de la Parinte');
 }
}

//Subclasa
class Child extends Parent {
 //redefineste metoda statica
 static sayHi(name, name2){
 super.sayHi(name); //include metoda de la parent
 alert('Hello '+ name2 +' de la Subclasa');
 }
}

//apeleaza metoda statica din subclasa
Child.sayHi('MarPlo', 'Gamv');
</script>

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag adauga rand nou in paragraf?
<b> <br> <p>
Prima linie ...<br>
Alta linie...
Ce proprietate CSS seteaza spatiu dintre litere?
text-size word-spacing letter-spacing
#id {
  letter-spacing: 2px;
}
Ce functie obtine accesul la un element HTML cu un anumit ID?
getElementById() getElementsByTagName() createElement()
var elm = document.getElementById("theID");
var content = elm.innerHTML;
alert(content);
Clic pe instructiunea "echo" utilizata corect.
echo "CoursesWeb.net" echo "CoursesWeb.net"; echo ""CoursesWeb.net";
echo "Adresa URL: http://CoursesWeb.net";
Care din urmatoarele expresii cu "paint" (a picta) se foloseste pentru forma Negativa?
will paint not paint have painted
She does not paint that landscape.
- Ea nu picteaza acel peisaj.
Care din urmatoarele expresii cu "cantar" (a canta) se foloseste pentru propozitie Negativa?
ir a cantar cantaba no cantar
Ella no canta esa canciĆ³n.
- Ea nu canta acel cantec.
Subclase cu extends si Mostenire

Last accessed pages

  1. Prepozitii - Prepositions (9831)
  2. Jokes - Glume, Bancuri, Humor (3072)
  3. Lectii audio-video de limba engleza (8562)
  4. Gramatica limbii engleze - Prezentare Generala (92979)
  5. Notiuni fundamentale despre bazele de date SQL (5495)

Popular pages this month

  1. Gramatica limbii engleze - Prezentare Generala (3024)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1147)
  3. Gramatica limbii spaniole. Indrumator si prezentare generala (910)
  4. Exercitii engleza - English Tests and exercises - Grammar (901)
  5. Alphabet and Pronunciation - Alfabetul si pronuntia in limba engleza (792)