Pewarisan Dasar
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GDScript di Coddy. Pelajaran 15 dari 65.
Pewarisan memungkinkan satu class mengambil alih variabel dan method dari class lain. Class yang mewariskannya adalah induk, dan class yang menerimanya adalah anak.
Berikut adalah class induk di filenya sendiri:
# 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")Child class menyebutkan class induknya setelah extends. class_name milik induknya bersifat global, jadi dog.gd tidak memerlukan baris impor:
# dog.gd
class_name Dog
extends AnimalDog ini tidak memiliki kodenya sendiri, tetapi memiliki animal_name, info(), dan konstruktor dari Animal:
var creature := Animal.new("Creature")
var buddy := Dog.new("Buddy")
creature.info()
buddy.info()I am Creature, an animal
I am Buddy, an animalChild dapat menambahkan method miliknya sendiri di samping method yang diwarisi. Di dalamnya, variabel yang diwarisi berfungsi seolah-olah child telah mendeklarasikannya:
# 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!Inheritance hanya berjalan satu arah. Animal tidak mendapatkan apa yang ditambahkan oleh Dog, jadi memanggil bark() pada object Animal adalah error.
Class yang kamu tulis sejauh ini menyatakan extends RefCounted: class tersebut adalah turunan dari RefCounted, sebuah class bawaan Godot.
Tantangan
MudahBuat class induk dan class turunan.
- Di
vehicle.gd, berikanVehicledua variabel String,branddanmodel. Konstruktor menyimpan kedua argumennya ke dalam variabel tersebut, daninfo()mengembalikanVehicle: BRAND MODEL. car.gdsudah berisiextends Vehicle. Tulis methodhonk(): method ini mengembalikanBRAND MODEL says Beep beep!, menggunakan variabel yang diwarisiCar.
Car tidak memerlukan konstruktor: Car.new("Honda", "Civic") menggunakan konstruktor dari Vehicle.
Kode yang disediakan membaca jumlah kendaraan yang akan dimasukkan, lalu satu baris untuk setiap kendaraan: vehicle atau car, sebuah brand dan sebuah model. Kode tersebut mencetak info() untuk setiap kendaraan dan juga honk() untuk sebuah mobil. Untuk vehicle Toyota Corolla dan car Honda Civic, kode tersebut mencetak:
Vehicle: Toyota Corolla
Vehicle: Honda Civic
Honda Civic says Beep beep!Tulis kodemu di vehicle.gd dan car.gd. main.gd berisi kode input/output yang disediakan dan tidak dapat diedit.
Coba sendiri
extends Node
func _ready():
# Kode input/output yang disediakan: biarkan apa adanya
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())
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPclass dan objectKata Kunci selfmethodpropertyKonstruktor (_init)Ringkasan: Kalkulator Sederhana4Polimorfisme
Method Overriding Sekali LagiDuck TypingKelas Abstrak dan MethodDesain InterfaceRingkasan: Kalkulator Bentuk7Sinyal
Apa itu Sinyal?Mendeklarasikan dan MemancarkanMenghubungkan ke SinyalSinyal dengan ArgumenRangkuman, Sistem Kesehatan10Pola Desain Bagian 2
Pola CommandPola AdapterPola DecoratorPola Template MethodPola StatePola Composite2Property class
Variabel instance vs. variabel statisFungsi statisSetter propertyGetter propertyPrivat berdasarkan konvensiRangkuman: Pengelola Rekening Bank5Enkapsulasi
Member Publik dan PrivatValidasi dengan SetterPenyembunyian InformasiProperty Hanya-BacaRingkasan: Sistem Catatan Siswa8Konsep OOP Lanjutan
Komposisi vs PewarisanInner ClassNode sebagai KomponenRefCounted vs NodeEnum dalam Class11Proyek: Manajemen Perpustakaan
Gambaran Umum Proyekclass Buku dan Pengguna3Pewarisan
Pewarisan DasarKata Kunci superPenimpaan MethodRantai PewarisanPemeriksaan Tipe dengan isUlasan: Hierarki KaryawanLatihan sendiri: Compiler GDScript online