Menu
Coddy logo textTech

Metot Geçersiz Kılmaya Yeniden Bakış

Coddy'nin Python Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 23 / 64.

Polimorfizm "çok biçimlilik" anlamına gelir ve farklı sınıflara ait nesnelerin aynı metot çağrısına farklı şekillerde yanıt vermesini sağlar. Metot geçersiz kılma (method overriding) bunu mümkün kılar.

İşte bir metodu olan ebeveyn sınıf:

class Animal:
    def speak(self):
        return "Animal makes a sound"

Aynı metodu geçersiz kılan alt sınıflar oluşturun:

class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

class Cow(Animal):
    def speak(self):
        return "Moo!"

Her alt sınıf, speak() metodunun kendi uygulamasını sağlar.

Farklı hayvanlardan oluşan bir liste oluşturun:

animals = [Dog(), Cat(), Cow(), Animal()]

Tüm nesnelerde aynı yöntemi çağırın:

for animal in animals:
    print(animal.speak())

Çıktı:

Woof!
Meow!
Moo!
Animal makes a sound

Bu, iş başındaki çok biçimliliktir (polymorphism) - aynı metot çağrısı, nesnenin gerçek türüne bağlı olarak farklı davranır.

Polimorfizmi fonksiyonlarla da kullanabilirsiniz:

def make_animal_speak(animal):
    print(animal.speak())

dog = Dog()
cat = Cat()

make_animal_speak(dog)  # Hav!
make_animal_speak(cat)  # Miyav!

Fonksiyonun hangi tür hayvan aldığını bilmesine gerek yoktur - sadece speak() fonksiyonunu çağırır ve doğru davranışı elde eder.

Anahtar Nokta: Polimorfizm, farklı nesnelere ortak bir arayüz üzerinden aynı şekilde davranmanıza olanak tanır. Metot geçersiz kılma (method overriding) farklı uygulamalar sağlarken, polimorfizm bunları tek tipte çağırmanıza izin verir. Bu, kodu daha esnek ve genişletilmesi daha kolay hale getirir.

challenge icon

Görev

Orta

Bu meydan okumada, bir araç kalıtım sistemi uygulayacaksınız.

Şu dosyaları düzenlemeniz gerekecek:

  • vehicle.py: Marka/model (make/model) öznitelikleri ve metotları ile temel Vehicle sınıfını uygulayın
  • car.py: Vehicle sınıfından miras alan Car sınıfını oluşturun
  • motorcycle.py: Vehicle sınıfından miras alan Motorcycle sınıfını oluşturun
  • truck.py: Vehicle sınıfından miras alan Truck sınıfını oluşturun

Her dosya, uygulamanızı adım adım yönlendirmek için ayrıntılı TODO yorumları içerir. Dosyalar arasında gereken import ifadelerine dikkat edin ve kalıtım ilişkilerini takip edin. driver.py dosyası, uygulamanızın tüm araç türlerinde doğru çalıştığını doğrulayacak test senaryolarını içerir.

Kendin dene

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"


# Farklı araçlarla test et - BU TEST KODUNU DEĞİŞTİRMEYİN
vehicles = [
    Car("Toyota", "Camry"),
    Motorcycle("Harley", "Davidson"),
    Truck("Ford", "F-150"),
    Vehicle("Generic", "Vehicle")
]

for v in vehicles:
    print(vehicle_info(v))
quiz iconKendini test et

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

Object Oriented Programming bölümündeki tüm dersler