Temel Kalıtım
Coddy'nin GDScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 15 / 65.
Kalıtım, bir sınıfın başka bir sınıfın değişkenlerini ve metotlarını devralmasını sağlar. Bunları aktaran sınıf üst sınıf, bunları alan sınıf ise alt sınıftır.
İşte kendi dosyasında bulunan bir üst sınıf:
# animal.gd
class_name Animal
extends RefCounted
var animal_name: String
func _init(n: String) -> void:
animal_name = n
func info() -> void:
print("I am ", animal_name, ", an animal")Bir alt sınıf, üst sınıfının adını extends'ten sonra yazar. Üst sınıfın class_name'i globaldir, bu yüzden dog.gd için import satırı gerekmez:
# dog.gd
class_name Dog
extends AnimalBu Dog sınıfının kendine ait bir kodu yoktur, ancak animal_name, info() ve Animal sınıfının kurucusuna sahiptir:
var creature := Animal.new("Creature")
var buddy := Dog.new("Buddy")
creature.info()
buddy.info()I am Creature, an animal
I am Buddy, an animalBir çocuk, devralınanların yanına kendi yöntemlerini ekleyebilir. Bu yöntemlerin içinde, devralınan değişkenler çocuk tarafından tanımlanmış gibi çalışır:
# dog.gd
class_name Dog
extends Animal
func bark() -> void:
print(animal_name, " says Woof!")var buddy := Dog.new("Buddy")
buddy.info()
buddy.bark()I am Buddy, an animal
Buddy says Woof!Kalıtım tek yönlüdür. Bir Animal, Dog'un eklediklerini almaz; bu nedenle bir Animal nesnesinde bark() çağırmak hatadır.
Şimdiye kadar yazdığınız sınıflar extends RefCounted diyordu: Godot'ta yerleşik bir sınıf olan RefCounted'ın alt sınıflarıydılar.
Görev
KolayBir üst sınıf ve bir alt sınıf oluştur.
vehicle.gdiçinde,Vehiclesınıfınabrandvemodeladında iki String değişkeni ver. Yapıcı, iki argümanını bu değişkenlerde saklasın veinfo()şu değeri döndürsün:Vehicle: BRAND MODEL.car.gddosyasında zatenextends Vehicleyazıyor.honk()metodunu yaz: bu metot,Carsınıfının miras aldığı değişkenleri kullanarakBRAND MODEL says Beep beep!değerini döndürsün.
Car için bir yapıcı gerekmez: Car.new("Honda", "Civic"), Vehicle sınıfındaki yapıcıyı kullanır.
Sağlanan kod, ardından kaç aracın geleceğini ve her araç için bir satır okur: vehicle veya car, bir marka ve bir model. Her araç için info() çıktısını, ayrıca bir araba için honk() çıktısını yazdırır. vehicle Toyota Corolla ve car Honda Civic için şu çıktıyı verir:
Vehicle: Toyota Corolla
Vehicle: Honda Civic
Honda Civic says Beep beep!Kodunu vehicle.gd ve car.gd dosyalarına yaz. main.gd, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
extends Node
func _ready():
# Sağlanan giriş/çıkış kodu: olduğu gibi bırakın
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
if parts[0] == "car":
var car := Car.new(parts[1], parts[2])
print(car.info())
print(car.honk())
else:
var vehicle := Vehicle.new(parts[1], parts[2])
print(vehicle.info())
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
1Nesne Yönelimli Programlamanın Temelleri
Harici DosyalarNesne Yönelimli Programlamaya GirişSınıflar ve Nesnelerself Anahtar KelimesiMetotlarÖzelliklerKurucu (_init)Tekrar - Basit Hesap Makinesi4Çok Biçimlilik
Metot Ezme Konusuna Yeniden BakışÖrdek TiplemesiSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı7Sinyaller
Sinyal Nedir?Tanımlama ve Sinyal GöndermeSinyallere BağlanmaArgümanlı SinyallerTekrar - Sağlık Sistemi10Tasarım Kalıpları 2. Bölüm
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıBileşik Kalıp2Sınıf Özellikleri
Örnek ve Statik DeğişkenlerStatik FonksiyonlarÖzellik AyarlayıcılarıÖzellik AlıcılarıGeleneksel Olarak ÖzelTekrar - Banka Hesabı Yöneticisi5Kapsülleme
Public ve Private ÜyelerSetter'larla DoğrulamaBilgi GizlemeSalt Okunur ÖzelliklerTekrar - Öğrenci Kayıt SistemiKendi başına pratik yap: Online GDScript derleyicisi