Meninjau Ulang Method Overriding
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Python di Coddy. Pelajaran 23 dari 64.
Polimorfisme berarti "banyak bentuk" dan memungkinkan object dari class yang berbeda merespons secara berbeda terhadap pemanggilan method yang sama. Method overriding memungkinkan hal ini.
Berikut adalah class induk dengan sebuah method:
class Animal:
def speak(self):
return "Animal makes a sound"Buat child class yang melakukan override pada method yang sama:
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
class Cow(Animal):
def speak(self):
return "Moo!"Setiap class anak menyediakan implementasinya sendiri untuk speak().
Buat list berisi berbagai hewan:
animals = [Dog(), Cat(), Cow(), Animal()]Panggil method yang sama pada semua object:
for animal in animals:
print(animal.speak())Output:
Woof!
Meow!
Moo!
Animal makes a soundInilah polimorfisme dalam praktik, pemanggilan method yang sama berperilaku berbeda berdasarkan tipe sebenarnya dari object.
Kamu juga bisa menggunakan polimorfisme dengan fungsi:
def make_animal_speak(animal):
print(animal.speak())
dog = Dog()
cat = Cat()
make_animal_speak(dog) # Guk!
make_animal_speak(cat) # Meong!Fungsi ini tidak perlu mengetahui jenis hewan yang diterimanya, fungsi ini hanya memanggil speak() dan mendapatkan perilaku yang tepat.
Poin penting: Polimorfisme memungkinkan kamu memperlakukan berbagai object dengan cara yang sama melalui antarmuka umum. Method overriding menyediakan implementasi yang berbeda, sedangkan polimorfisme memungkinkan kamu memanggilnya secara seragam. Ini membuat kodemu lebih fleksibel dan lebih mudah dikembangkan.
Tantangan
SedangDalam tantangan ini, kamu akan menerapkan sistem pewarisan kendaraan.
Kamu perlu mengedit file berikut:
vehicle.py: Terapkan class dasarVehicledengan atribut make/model dan methodcar.py: Buat classCaryang mewarisiVehiclemotorcycle.py: Buat classMotorcycleyang mewarisiVehicletruck.py: Buat classTruckyang mewarisiVehicle
Setiap file berisi komentar TODO terperinci untuk memandu penerapanmu langkah demi langkah. Perhatikan pernyataan import yang diperlukan antarfile dan ikuti hubungan pewarisannya. File driver.py berisi kasus uji yang akan memverifikasi bahwa penerapanmu berfungsi dengan benar untuk semua jenis kendaraan.
Coba sendiri
from vehicle import Vehicle
from car import Car
from motorcycle import Motorcycle
from truck import Truck
def vehicle_info(vehicle):
return f"{vehicle.make} {vehicle.model}: {vehicle.start()}, Efficiency: {vehicle.fuel_efficiency()} mpg"
# Uji dengan berbagai kendaraan, JANGAN UBAH KODE UJI INI
vehicles = [
Car("Toyota", "Camry"),
Motorcycle("Harley", "Davidson"),
Truck("Ford", "F-150"),
Vehicle("Generic", "Vehicle")
]
for v in vehicles:
print(vehicle_info(v))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 vs objectParameter selfmethodAtributMethod Konstruktor (__init__)Rangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan DasarFungsi super()Penimpaan MethodPewarisan BergandaUrutan Resolusi MethodRingkasan: Hierarki Karyawan5Polimorfisme
Meninjau Ulang Method OverridingDuck Typingclass dan method AbstrakDesain InterfaceRingkasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanMixinsMetode Statis dan Metode ClassDecorator ClassPengelola Konteks11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola Composite3Property class
Variabel instance vs variabel classDekorator propertyAtribut privatRangkuman: Pengelola Rekening Bank6Enkapsulasi
Anggota Public, Protected, PrivateModifier AksesPenyembunyian InformasiDecorator Property Tingkat LanjutUlasan: Sistem Catatan Siswa12Proyek: Manajemen Perpustakaan
Ikhtisar Proyekclass Buku dan PenggunaSistem PeminjamanFitur PencarianAntarmuka AdminPengujian dan IntegrasiLatihan sendiri: Compiler Python online