JavaScript Sınıf Kalıtımı
Sınıf Kalıtımı
Bir sınıf mirası oluşturmak için extends
anahtar kelimeyi kullanın.
Sınıf mirasıyla oluşturulan bir sınıf, tüm yöntemleri başka bir sınıftan miras alır:
Örnek
Yöntemleri "Car" sınıfından devralacak "Model" adında bir sınıf oluşturun:
class Car {
constructor(brand) {
this.carname =
brand;
}
present() {
return 'I have a ' + this.carname;
}
}
class Model extends Car {
constructor(brand, mod) {
super(brand);
this.model = mod;
}
show() {
return this.present() + ', it is a ' + this.model;
}
}
let myCar = new Model("Ford", "Mustang");
document.getElementById("demo").innerHTML
= myCar.show();
Yöntem super()
, üst sınıfa başvurur.
Yapıcı yönteminde yöntemi çağırarak super()
, ebeveynin yapıcı yöntemini çağırır ve ebeveynin özelliklerine ve yöntemlerine erişim sağlarız.
Kalıtım, kodun yeniden kullanılabilirliği için yararlıdır: yeni bir sınıf oluşturduğunuzda mevcut bir sınıfın özelliklerini ve yöntemlerini yeniden kullanın.
Alıcılar ve Ayarlayıcılar
Sınıflar ayrıca alıcıları ve ayarlayıcıları kullanmanıza izin verir.
Mülkleriniz için alıcılar ve ayarlayıcılar kullanmak akıllıca olabilir, özellikle de değerleri döndürmeden veya ayarlamadan önce değerle özel bir şey yapmak istiyorsanız.
Sınıfa alıcılar ve ayarlayıcılar eklemek için
get
ve set
anahtar kelimelerini kullanın.
Örnek
"carname" özelliği için bir alıcı ve bir ayarlayıcı oluşturun:
class Car {
constructor(brand) {
this.carname
= brand;
}
get cnam() {
return this.carname;
}
set cnam(x) {
this.carname = x;
}
}
let myCar = new Car("Ford");
document.getElementById("demo").innerHTML = myCar.cnam;
Not: Getter bir method olsa bile özellik değerini almak istediğinizde parantez kullanmazsınız.
Bu durumda, alıcı/ayarlayıcı yönteminin adı özelliğin adıyla aynı olamaz carname
.
Birçok programcı _
, alıcıyı/ayarlayıcıyı gerçek özellikten ayırmak için özellik adından önce bir alt çizgi karakteri kullanır:
Örnek
Alıcı/ayarlayıcıyı asıl özellikten ayırmak için alt çizgi karakterini kullanabilirsiniz:
class Car {
constructor(brand) {
this._carname
= brand;
}
get carname() {
return this._carname;
}
set carname(x) {
this._carname = x;
}
}
let myCar = new Car("Ford");
document.getElementById("demo").innerHTML = myCar.carname;
Bir ayarlayıcı kullanmak için, parantez olmadan bir özellik değeri ayarladığınızda olduğu gibi aynı sözdizimini kullanın:
Örnek
Araç adını "Volvo" olarak değiştirmek için bir ayarlayıcı kullanın:
class Car {
constructor(brand) {
this._carname
= brand;
}
get carname() {
return this._carname;
}
set carname(x) {
this._carname = x;
}
}
let myCar = new Car("Ford");
myCar.carname = "Volvo";
document.getElementById("demo").innerHTML = myCar.carname;
Kaldırma
İşlevlerin ve diğer JavaScript bildirimlerinin aksine, sınıf bildirimleri kaldırılmaz.
Bu, kullanmadan önce bir sınıf bildirmeniz gerektiği anlamına gelir:
Örnek
//You cannot use the class yet.
//myCar = new Car("Ford")
//This would
raise an error.
class Car {
constructor(brand) {
this.carname = brand;
}
}
//Now you can use the class:
let myCar = new Car("Ford")
Not: Diğer bildirimler için, işlevler gibi, JavaScript bildirimlerinin varsayılan davranışı kaldırıldığından (bildirimi en üste taşımak) bildirilmeden önce kullanmaya çalıştığınızda hata ALAMAZSINIZ.