[php] 다형성
class Animal {
    public function makeSound() {
        echo "Some generic sound";
    }
}

class Dog extends Animal {
    public function makeSound() {
        echo "Woof woof";
    }
}

class Cat extends Animal {
    public function makeSound() {
        echo "Meow meow";
    }
}

$animal1 = new Dog();
$animal1->makeSound(); // 출력 결과: Woof woof

$animal2 = new Cat();
$animal2->makeSound(); // 출력 결과: Meow meow

위의 예제에서 Animal 클래스는 makeSound 메소드를 정의하고 있습니다. Dog 클래스와 Cat 클래스는 Animal 클래스를 상속하고, makeSound 메소드를 오버라이딩하여 다른 소리를 출력하고 있습니다. 이렇게 다형성을 사용하면 동일한 메소드를 호출하지만 실제로 실행되는 메소드는 객체의 타입에 따라 다르게 동작합니다.

이와 같이 다형성은 코드의 재사용성을 높이고 유지보수를 용이하게 만들어줍니다. 객체 지향 프로그래밍에서는 다형성을 통해 유연하고 확장 가능한 코드를 작성할 수 있습니다.