abstract
- Dart kursu
- Orta seviye
- Ders 10/116
- 5 dk
abstract class ile soyut sınıf öğrenirsin.
abstract class
Bir abstract class (soyut sınıf), doğrudan örneği üretilmeyen sınıftır. Soyut metotlar yalnızca imza taşır; gövde alt sınıfta yazılır. abstract class anahtar kelimeleriyle bildirilir.
Örnek: abstract class Shape { double area(); }. Burada Shape'in örneği alınamaz: Shape() derleme hatası verir. area metodu gövdesiz bırakılmıştır; her alt sınıf kendi alan hesabını yazmak zorundadır. Soyut sınıflar, ortak bir sözleşme (contract) tanımlamak için kullanılır; alt sınıflar bu sözleşmeyi somutlaştırır.
Soyut metot ve alt sınıf
Soyut sınıftaki gövdesiz metotlar alt sınıfta @override ile yazılır. Alt sınıf gövde vermediği sürece kendisi de soyut olur; somut olması için tüm soyut metotları uygulaması gerekir.
Örnek: class Circle extends Shape { final double radius; Circle(this.radius); @override double area() => 3.14 * radius * radius; }. Burada Circle somut bir sınıftır çünkü area'ya gövde vermiştir. Shape soyut olduğu için Shape örneği alınamaz, ama Circle örneği alınabilir. Soyut sınıf, kalıtım için iskelet kurar.
Uygulama Circle sınıfını yaz
Var olan abstract class Shape { double area(); } tanımını koru. Circle adında, Shape'ten miras alan bir sınıf tanımla; final double radius alanını ve Circle(this.radius) yapıcısını ekle. @override double area() => 3.14 * radius * radius; metodunu yaz. main içinde var c = Circle(2); ile örnek oluştur ve print(c.area()) çağrısı yap.
Başlangıç kodu
abstract class Shape {
double area();
}
// Circle sınıfını Shape'ten miras alacak biçimde tanımla
void main() {
// Circle(2) örneği oluştur ve c.area() yazdır
}Örnek çözüm
abstract class Shape {
double area();
}
class Circle extends Shape {
final double radius;
Circle(this.radius);
@override
double area() => 3.14 * radius * radius;
}
void main() {
var c = Circle(2);
print(c.area());
}Beklenen çıktı
12.56
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangisi doğrudur?
- Soyut sınıf doğrudan örneklenemez
- Soyut sınıf final alan içeremez Doğru cevap
- Soyut sınıf yalnızca bir alt sınıfa sahip olabilir
- Soyut sınıfın tüm metotları gövdeli olmalıdır
Açıklama: Soyut sınıflar final alanlar içerebilir; yalnızca örneği alınamaz.
2 Abstract parçalarını eşle
| Kavram | Anlamı |
|---|---|
abstract class |
Sınıf ön eki |
double area() |
Soyut metot imzası |
Circle |
Somut alt sınıf |
3 abstract anahtarını ekle
class Shape {
double area();
}____
class Shape {
double area();
}abstract
Açıklama: abstract ön eki sınıfın örneğinin alınamayacağını belirtir.