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
Ce tip de <input> creaza o paleta de culori pentru selectare culoare?
type="text" type="color" type="date"
<input type="color" name="get_color" />
Care metoda CSS roteste elementul HTML la un anumit numar de grade?
scale() translate() rotate()
#some_id:hover {
  transform: rotate(60deg);
  -ms-transform: rotate(60deg);    /* IE 9 */
  -moz-transform: rotate(60deg);   /* Firefox */
}
Click pe functia care returneaza numarul cel mai mare.
pow() min() max()
var maxn = Math.max(8, 4, 88, 56);
alert(maxn);      // 88
Ce functie previne ca un fisier sa fie inclus mai mult de o data intr-o pagina?
include() include_once() require()
include_once("un_fisier.php");
Care este traducerea corecta pentru: "Ahead of time"?
Peste timp La timp Inainte de vreme
Most people arrived ahead of time.
- Cei mai multi oameni au sosit inainte de vreme (prea devreme).
Indicati traducerea corecta a cuvantului "buenĂ­simo"
mai bun mai putin bun extrem de bun
Este fruto es buenĂ­simo.
- Acest fruct este extrem /nemaipomenit de bun.
Subclase cu extends si Mostenire

Last accessed pages

  1. jQuery - Animare proprietati CSS (184)
  2. Curs HTML gratuit Tutoriale HTML5 (62767)
  3. Conditional IF in Limba Engleza - Fraze Conditionale (54104)
  4. Gramatica limbii spaniole. Indrumator si prezentare generala (31923)
  5. Prezentul simplu si continuu - Present Tense Simple and Continuous (67948)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (2297)
  2. Curs HTML gratuit Tutoriale HTML5 (1856)
  3. Curs si Tutoriale JavaScript (1729)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (1653)
  5. Curs CSS Online Tutoriale CSS3 (1560)