extends
anahtar kelimesi,
üst sınıfla birlikte başka bir alt sınıf işlevi gören sınıf (bazen
"base class" olarak adlandırılır ve alt sınıfın prototipi olarak işlev görür (bazen
"alt sınıf" olarak adlandırdık. veya "türetilmiş sınıf").
class ParentClass {}
class ChildClass extends ParentClass {}
Object.getPrototypeOf( ChildClass );
> class ParentClass {}
Bu alt sınıflar, üst sınıfın özelliklerini ve yöntemlerini devralır. Bu bir sınıfın temel işlevini, daha spesifik yanıtlar verecek şekilde genişletmenizi sağlar. mümkün olan her kullanım alanına uyacak şekilde üst sınıfa yüklenmeden, veya benzer bir amaca hizmet eden bir kodu yeniden uygulamaktır.
Alt sınıflar, devralınan yöntemler için kendi uygulamalarını sağlayabilir bir ebeveyn sınıfından:
class MyClass {
constructor( myPassedValue ) {
this.instanceProp = myPassedValue;
}
classMethod() {
console.log( `The value was '${ this.instanceProp }.'`)
}
}
class ChildClass extends MyClass {
classMethod() {
console.log( `The value was '${ this.instanceProp },' and its type was '${ typeof this.instanceProp }.'`)
}
}
const myParentClassInstance = new MyClass( "My string." );
const mySubclassInstance = new ChildClass( 100 );
myParentClassInstance.classMethod();
> "The value type was 'string.'"
mySubclassInstance.classMethod();
> "The value was '100,' and its type was 'number.'"
Ayrıca, üst sınıfta tanımlanan yöntemleri
super
kullanan alt sınıf:
class MyClass {
constructor( myPassedValue ) {
this.instanceProp = myPassedValue;
}
classMethod() {
console.log( `The value was '${ this.instanceProp }.'`)
}
}
class ChildClass extends MyClass {
subclassMethod() {
super.classMethod();
console.log( `The value type was '${ typeof this.instanceProp }.'`)
}
}
const mySubclassInstance = new ChildClass( 100 );
mySubclassInstance.subclassMethod();
> The value was '100.'
> The value type was 'number.'
Önceki örneklerde gösterildiği gibi, constructor()
yöntemi
bir alt sınıfın bağlamını düşünün. JavaScript'in örtülü oluşturucusu, üst
kurucusuyla birlikte çalışır. Ancak bir
oluşturucusu varsa önce super()
öğesini,
this
öğesine referans vermeden önce gerekli bağımsız değişkenleri belirtin.
class MyClass {
constructor( myPassedValue ) {
this.instanceProp = myPassedValue;
}
classMethod() {
console.log( `The value was '${ this.instanceProp }.'`)
}
}
class ChildClass extends MyClass {
constructor( myPassedValue ) {
super( myPassedValue );
this.modifiedProp = myPassedValue + 50;
}\
subclassMethod() {
super.classMethod();
console.log( `The value type was '${ typeof this.instanceProp }.'`)
}
}
const mySubclassInstance = new ChildClass( 100 );
mySubclassInstance;
> MyClass { instanceProp: 100, modifiedProp: 150 }
Alıcılar ve belirleyiciler, yalnızca verileri almak ve tanımlamak için kullanılan
değerlerine göre sıralanır. get
ve set
anahtar kelimeleri kullanılarak tanımlanan yöntemler,
hareketsizmiş gibi etkileşimde bulunabilecekleri yöntemler oluşturursunuz
özellikler.
class MyClass {
constructor( originalValue ) {
this.totalValue = 0;
}
set doubleThisValue( newValue ) {
this.totalValue = newValue * 2;
}
get currentValue() {
console.log( `The current value is: ${ this.totalValue }` );
}
}
const myClassInstance = new MyClass();
myClassInstance;
> MyClass { totalValue: 0 }
myClassInstance.doubleThisValue = 20;
myClassInstance.currentValue;
> The current value is: 40
get
ve set
özellikleri sınıfın prototip özelliğinde tanımlanır.
ve bu nedenle sınıfın tüm örnekleri için kullanılabilir durumdadır.
Öğrendiklerinizi sınayın
extends
anahtar kelimesiyle oluşturulan sınıflar hakkındaki doğru ifadeleri seçin.
It can't overwrite methods from a parent class.