>백엔드 개발 >PHP 튜토리얼 >상속, 다형성 및 인터페이스: PHP의 세 가지 주요 객체 지향 기능

상속, 다형성 및 인터페이스: PHP의 세 가지 주요 객체 지향 기능

WBOY
WBOY원래의
2023-05-11 15:45:061484검색

PHP는 PHP5부터 객체지향 프로그래밍(OOP)을 지원하는 서버측 프로그래밍 언어입니다. OOP의 핵심 아이디어는 데이터와 동작을 객체에 캡슐화하여 프로그램의 유지 관리성과 확장성을 향상시키는 것입니다. PHP에서 객체 지향 프로그래밍에는 상속, 다형성 및 인터페이스라는 세 가지 주요 특성이 있습니다.

1. 상속

상속이란 한 클래스가 다른 클래스의 속성과 메서드를 상속받을 수 있음을 의미합니다. 상속된 클래스를 부모 클래스 또는 기본 클래스라고 하며, 상속된 클래스를 하위 클래스 또는 파생 클래스라고 합니다. 하위 클래스는 상위 클래스의 속성과 메서드를 상속할 수 있으며 이를 재정의하거나 확장할 수 있습니다.

예를 들어 $name 및 $color 속성과 eat() 및 sleep() 메서드가 있는 동물 클래스 Animal을 정의할 수 있습니다. 그런 다음 Animal 클래스에서 상속하고 bark() 메서드를 추가하는 Dog 클래스 Dog를 정의할 수 있습니다.

class Animal {
    protected $name;
    protected $color;
    
    public function eat() {
        echo "$this->name is eating.
";
    }
    
    public function sleep() {
        echo "$this->name is sleeping.
";
    }
}

class Dog extends Animal {
    public function bark() {
        echo "$this->name is barking.
";
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";
$dog->eat(); // 输出: Fido is eating.
$dog->sleep(); // 输出: Fido is sleeping.
$dog->bark(); // 输出: Fido is barking.

상위 클래스에서는 protected 키워드를 사용하여 $name 및 $color 속성을 정의합니다. 즉, 상위 클래스와 하위 클래스 내에서만 액세스할 수 있으며 클래스 외부에서는 직접 액세스할 수 없습니다. 하위 클래스에서는 public 키워드를 사용하여 bark() 메서드를 정의했는데, 이는 클래스 내부와 외부 모두에서 액세스할 수 있음을 의미합니다.

2. 다형성

다형성은 객체가 여러 형태로 나타날 수 있다는 것을 의미합니다. 객체 지향 프로그래밍에서 다형성은 프로그램의 정확성에 영향을 주지 않고 하위 클래스가 상위 클래스를 대체할 수 있음을 의미합니다.

예를 들어, 동물 정보를 표시하는 show($animal) 메소드가 있는 동물원 클래스 Zoo를 정의할 수 있습니다. 이제 다형성을 달성하기 위해 다양한 동물 개체를 show() 메서드에 전달할 수 있습니다.

class Zoo {
    public function show($animal) {
        $animal->eat();
        $animal->sleep();
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";

$cat = new Cat();
$cat->name = "Fluffy";
$cat->color = "white";

$zoo = new Zoo();
$zoo->show($dog); // 输出: Fido is eating. Fido is sleeping.
$zoo->show($cat); // 输出: Fluffy is eating. Fluffy is sleeping.

이 예에서는 Animal 클래스에서 상속되고 eat() 메서드를 재정의하는 새로운 고양이 클래스 Cat을 추가했습니다. 개와 고양이 객체를 show() 메소드에 전달할 수 있으며 둘 다 Animal 클래스의 하위 클래스이므로 다형성을 달성할 수 있습니다.

3. 인터페이스

인터페이스는 일련의 메소드를 정의하지만 특정 구현이 없는 사양입니다. PHP에서 클래스는 특정 기능 요구 사항을 충족하기 위해 하나 이상의 인터페이스를 구현할 수 있습니다.

예를 들어, 동물 소리를 출력하기 위한 talk() 메서드가 있는 Speakable 인터페이스를 정의할 수 있습니다. 그런 다음 개와 고양이 클래스가 이 인터페이스를 구현하도록 할 수 있습니다.

interface Speakable {
    public function speak();
}

class Dog extends Animal implements Speakable {
    public function bark() {
        echo "$this->name is barking.
";
    }
    
    public function speak() {
        $this->bark();
    }
}

class Cat extends Animal implements Speakable {
    public function meow() {
        echo "$this->name is meowing.
";
    }
    
    public function speak() {
        $this->meow();
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";
$dog->speak(); // 输出: Fido is barking.

$cat = new Cat();
$cat->name = "Fluffy";
$cat->color = "white";
$cat->speak(); // 输出: Fluffy is meowing.

이 예에서는 talk() 메서드가 있는 Speakable 인터페이스를 정의합니다. 그런 다음 Dog 및 Cat 클래스가 이 인터페이스를 구현하고 각각 talk() 메서드를 구현하도록 합니다. 이런 식으로 우리는 구체적인 구현을 알지 못한 채 개와 고양이 개체에 대해 talk() 메서드를 호출할 수 있습니다.

상속, 다형성 및 인터페이스는 PHP 객체 지향 프로그래밍의 세 가지 주요 기능입니다. 이를 통해 코드를 더 잘 구성 및 관리하고 코드 재사용성과 확장성을 향상할 수 있습니다. 이러한 기능을 이해하면 PHP의 객체 지향 프로그래밍 모델을 더 깊이 이해할 수 있습니다.

위 내용은 상속, 다형성 및 인터페이스: PHP의 세 가지 주요 객체 지향 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.