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 se foloseste in <table> pentru a crea celula de tip "header"?
<thead> <th> <td>
<table><tr>
  <th>Title 1</th>
  <th>Title 2</th>
</tr></table>
Ce proprietate CSS seteaza distanta dintre randuri?
line-height word-spacing margin
.some_class {
  line-height: 150%;
}
Care functie deschide o noua fereastra.
alert() confirm() open()
document.getElementById("id_button").onclick = function(){
  window.open("http://coursesweb.net/");
}
Indicati functia PHP care returneaza un array cu numele fisierelor si directoarelor dintr-un director.
mkdir() scandir() readdir()
$ar_dir = scandir("dir_name");
var_export($ar_dir);
Care din urmatoarele forme a verbului "sleep" (a dormi) se foloseste pentru viitor?
sleeping slept will sleep
He will sleep there.
- El va dormi acolo.
Care din urmatoarele forme a verbului "dormir" (a dormi) se foloseste pentru viitor?
dormido dormirá durmiendo
Él dormirá allí.
- El va dormi acolo.
Subclase cu extends si Mostenire

Last accessed pages

  1. Trecut perfect si Trecutul perfect continuu - Present perfect and Continuous (10522)
  2. Formatare text in pagina html (6637)
  3. Alphabet and Pronunciation - Alfabetul si pronuntia in limba engleza (13734)
  4. Accentul si Pronuntia (3488)
  5. Zilele saptamanii - Lunile anului - Anotimpurile - Engleza (4552)

Popular pages this month

  1. Gramatica limbii engleze - Prezentare Generala (2443)
  2. Cursuri si Tutoriale: Spaniola, Engleza, HTML, CSS, Php-Mysql, JavaScript, Ajax (1007)
  3. Alphabet and Pronunciation - Alfabetul si pronuntia in limba engleza (815)
  4. Gramatica limbii spaniole. Indrumator si prezentare generala (810)
  5. Substantivul din limba engleza - The Noun (654)