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:
- super(parametri) - apeleaza constructor() din parinte, cu parametri necesari (numai in constructor()).
- super.metoda(parametri) - awpeleaza o metoda din clasa de baza. Returneaza valoarea returnata de metoda din clasa parinte.
- 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 atribut e folosit in tag-ul <a> pentru adresa link-ului?
src href rel<a href="http://coursesweb.net/" title="CoursesWeb.net">CoursesWeb.net</a>
Ce proprietate CSS seteaza tipul fontului utilizat?
font-family text-decoration font-sizeh2 {
font-family:"Calibri", sans-serif;
}
Ce instructiune selecteaza toate tag-urile <div> cu class="cls"?
querySelector("div.cls") getElementsByTagName("div") querySelectorAll("div.cls")var elm_list = document.querySelectorAll("div.cls");
var nr_elms = elm_list.length; // numar elemente selectate
alert(nr_elms);
Indicati functia care returneaza suma valorilor dintr-un array.
array_sum() array_diff() array_shift()$arr =[1, 2, 3, 4);
$arr_sum = array_sum($arr);
echo $arr_sum; // 10
Indicati forma corecta a verbului "study" (a studia) la Trecutul Simplu in aceasta propozitie: "We (study) English."
studyed studys studiedWe studied English.
- Noi am studiat engleza.
Indicati forma corecta a verbului "decir" (a spune) la Prezent in aceasta propozitie: "Yo (decir) siempre la verdad."
digas digo decirYo digo siempre la verdad.
- Eu spun mereu adevarul.