Menu
CoddyTech

Penimpaan Method

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Python di Coddy. Pelajaran 19 dari 64.

Method overriding memungkinkan class turunan menyediakan implementasinya sendiri untuk method yang sudah ada di class induk.

Berikut contoh parent class dengan method:

class Animal:
    def __init__(self, name):
        self.name = name
    
    def make_sound(self):
        print("Some generic animal sound")
    
    def info(self):
        print(f"I am {self.name}")

Buat class turunan yang menimpa satu method:

class Dog(Animal):
    def make_sound(self):
        print("Woof! Woof!")  # Ganti method induk

method make_sound di Dog menggantikan method yang berasal dari Animal, tetapi info tetap diwarisi tanpa perubahan.

Buat instance dan uji method-nya:

animal = Animal("Generic Animal")
dog = Dog("Buddy")

Panggil method yang dioverride:

animal.make_sound()
dog.make_sound()

Panggil method yang tidak di-override:

animal.info()
dog.info()

Output:

Some generic animal sound
Woof! Woof!
I am Generic Animal
I am Buddy

Kamu dapat mengganti method apa pun yang diwarisi:

class Cat(Animal):
    def make_sound(self):
        print("Meow!")
    
    def info(self):
        print(f"I am {self.name}, a sneaky cat")

cat = Cat("Whiskers")
cat.make_sound()
cat.info()

Output:

Meow!
I am Whiskers, a sneaky cat

Poin penting: Method overriding memungkinkan class turunan menyesuaikan perilaku yang diwarisi. Cukup definisikan method dengan nama yang sama di class turunan. Versi milik class turunan akan digunakan sebagai pengganti versi milik class induk.

challenge icon

Tantangan

Sedang

Dalam tantangan ini, kamu akan mengimplementasikan hierarki shape.

  • shape.py - Berisi class induk Shape dengan atribut color dan method
  • circle.py - Berisi class Circle yang mewarisi Shape
  • square.py - Berisi class Square yang mewarisi Shape

Setiap file berisi komentar TODO terperinci yang akan memandumu langkah demi langkah dalam implementasi.

Coba sendiri

from shape import Shape
from circle import Circle
from square import Square

# Penangan kasus uji
test_case = input()

if test_case == "base_shape":
    # Uji class dasar Shape
    shape = Shape("green")
    print(f"Color: {shape.color}")
    print(f"Area: {shape.area()}")
    print("Describe output:")
    shape.describe()

elif test_case == "circle_basics":
    # Uji pembuatan Circle dan method dasarnya
    circle = Circle("red", 5)
    print(f"Color: {circle.color}")
    print(f"Radius: {circle.radius}")
    print(f"Area (rounded): {round(circle.area(), 2)}")
    print("Describe output:")
    circle.describe()

elif test_case == "square_basics":
    # Uji pembuatan Square dan method dasarnya
    square = Square("blue", 4)
    print(f"Color: {square.color}")
    print(f"Side length: {square.side_length}")
    print(f"Area: {square.area()}")
    print("Describe output:")
    square.describe()

elif test_case == "various_sizes":
    # Uji beberapa instance dengan ukuran berbeda
    shapes = [
        Circle("yellow", 2),
        Circle("orange", 7.5),
        Square("purple", 3),
        Square("black", 10)
    ]
    
    for i, shape in enumerate(shapes, 1):
        print(f"Shape {i}:")
        shape.describe()
        print(f"Area: {round(shape.area(), 2)}")
        print()  # Baris kosong agar mudah dibaca

elif test_case == "shape_polymorphism":
    # Uji perilaku polimorfik dengan list bentuk
    shapes = [
        Shape("white"),
        Circle("red", 3),
        Square("blue", 4)
    ]
    
    print("Polymorphic behavior demonstration:")
    for shape in shapes:
        shape.describe()
        print(f"Area: {round(shape.area(shape_polymorphism), 2)}")
        print()  # Baris kosong agar mudah dibaca

elif test_case == "original_test_case":
    # Jalankan kode pengujian asli dari tantangan
    circle = Circle("red", 5)
    square = Square("blue", 4)

    # Uji method describe
    circle.describe()
    square.describe()

    # Uji method area
    print(f"Circle area: {circle.area()}")
    print(f"Square area: {square.area()}")
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Python online