Menu
Coddy logo textTech

Temel Kalıtım

Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 36 / 110.

Kalıtım, bir sınıfın başka bir sınıfın özelliklerini ve metotlarını edinmesini sağlar. Aynı kodu tekrar yazmak yerine, mevcut bir sınıfın üzerine inşa edilen yeni bir sınıf oluşturursunuz. Orijinal sınıfa ebeveyn (veya üst sınıf), yeni sınıfa ise çocuk (veya alt sınıf) denir.

Dart'ta, bir ebeveyn sınıftan kalıtım almak için extends anahtar kelimesini kullanırsınız:

class Animal {
  String name;
  
  Animal(this.name);
  
  void eat() {
    print('$name is eating');
  }
}

class Dog extends Animal {
  Dog(String name) : super(name);
  
  void bark() {
    print('$name says woof!');
  }
}

void main() {
  var dog = Dog('Buddy');
  dog.eat();   // Animal sınıfından miras alındı
  dog.bark();  // Dog sınıfında tanımlandı
}

Dog sınıfı, Animal sınıfındaki name özelliğine ve eat() yöntemine otomatik olarak erişebilir; ayrıca kendine ait bark() yöntemi de vardır. Bu, bir "is-a" ilişkisi oluşturur: Dog bir Animal'dır.

Alt sınıf yeni özellikler ve metotlar ekleyebilir, ancak üst sınıftan public olan her şeyi miras alır. Farklı kütüphanelerdeki alt sınıflarda özel üyelerin (_ ile başlayanlar) doğrudan erişilebilir olmadığını, ancak miras alınan nesnede hala var olduklarını unutmayın.

challenge icon

Görev

Kolay

Kalıtımın alt sınıfların üst sınıf işlevlerini yeniden kullanmasına ve genişletmesine nasıl olanak tanıdığını gösteren bir araç sistemi oluşturalım. Genel araçlar için bir üst sınıf ve belirli bir araç türü için bir alt sınıf oluşturacaksın.

Kodunu iki dosyada düzenleyeceksin:

  • vehicle.dart: Sınıflarını burada tanımla:
    • Vehicle sınıfı (üst sınıf): String brand özelliğine, markayı alan bir kurucuya ve start() yazdıran [brand] engine starting... metoduna sahip olmalı
    • Motorcycle sınıfını genişleten bir Vehicle sınıfı. Ek bir int cc özelliği (motor hacmi), hem markayı hem de cc değerini alan bir kurucusu (markayı super kullanarak üst sınıfa aktarmalı) ve wheelie() yazdıran kendi [brand] is doing a wheelie! metodu olmalı
  • main.dart: Araç dosyanı içe aktar ve kalıtımı uygulamada göster:
    • Vehicle markasına sahip bir 'Toyota' oluştur
    • Onun start() metodunu çağır
    • Motorcycle markasına ve 'Harley' cc değerine sahip bir 1200 oluştur
    • Motosikletin start() metodunu çağır (Vehicle sınıfından kalıtılmıştır)
    • Motosikletin wheelie() metodunu çağır (Motorcycle sınıfında tanımlanmıştır)
    • Alt sınıfın kendi özelliğini göstermek için Motorcycle engine: [cc]cc yazdır

Motorcycle sınıfının brand sınıfındaki start() özelliğine ve Vehicle metoduna otomatik olarak erişim kazandığına, aynı zamanda kendine özgü cc özelliğine ve wheelie() metoduna sahip olduğuna dikkat et. Kalıtımın gücü budur: mevcut kodun üzerine inşa etmek.

Beklenen çıktı:

Toyota engine starting...
Harley engine starting...
Harley is doing a wheelie!
Motorcycle engine: 1200cc

Kendin dene

import 'vehicle.dart';

void main() {
  // TODO: Markası 'Toyota' olan bir Vehicle oluşturun
  
  // TODO: Aracın start() metodunu çağırın
  
  // TODO: Markası 'Harley' ve cc değeri 1200 olan bir Motorcycle oluşturun
  
  // TODO: Motosikletin start() metodunu çağırın (Vehicle sınıfından miras alınan)
  
  // TODO: Motosikletin wheelie() metodunu çağırın
  
  // TODO: Motosikletin cc özelliğini kullanarak 'Motorcycle engine: [cc]cc' yazdırın
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Dart derleyicisi