>  기사  >  백엔드 개발  >  PHP 객체 지향 상속, 다형성 및 캡슐화 소개

PHP 객체 지향 상속, 다형성 및 캡슐화 소개

小云云
小云云원래의
2018-03-02 09:49:152263검색

1. 인터페이스
PHP 프로그래밍 언어에서 인터페이스는 추상 유형이자 추상 메소드의 모음입니다. 인터페이스는 일반적으로 인터페이스로 선언됩니다. 클래스는 인터페이스를 구현하여 인터페이스의 메서드(추상 메서드)를 구현합니다.

인터페이스 정의:

interface InterAnimal{
        public function speak();
        public function name($name);
    }//接口实现
 class cat implements InterAnimal{
        public function speak(){
            echo "speak";
        }        public function name($name){
            echo "My name is ".$name;
        }
    }

특별 참고 사항:
* 모든 클래스는 추상 메서드입니다(추상을 선언할 필요 없음)
*인터페이스 추상 메서드는 공개됩니다
* 멤버(필드)는 상수여야 합니다

2. 상속
다른 클래스에서 상속받은 클래스를 해당 클래스의 하위 클래스라고 합니다. 이 관계는 종종 부모와 자식의 비유로 표현됩니다. 하위 클래스는 상위 클래스의 특성을 상속받습니다. 이러한 속성은 속성과 메서드로 구성됩니다. 하위 클래스는 상위 클래스의 기능 외에 새로운 기능을 추가할 수 있으므로 하위 클래스를 상위 클래스의 "확장"이라고도 합니다.
PHP에서는 클래스 상속이 확장 키워드를 통해 구현됩니다. 다른 클래스에서 상속받는 클래스는 하위 클래스 또는 파생 클래스가 되고, 하위 클래스에서 상속받는 클래스는 상위 클래스 또는 기본 클래스가 됩니다.

class Computer {
    private $_name = '联想';    public function __get($_key) {
        return $this->$_key;
    }    public function run() {
        echo '父类run方法';
    }
}class NoteBookComputer extends Computer {}$notebookcomputer = new NoteBookComputer ();$notebookcomputer->run ();  //继承父类中的run()方法echo $notebookcomputer->_name;  //通过魔法函数__get()获得私有字段


특별 주의: 때로는 상위 클래스의 필드와 메서드가 필요하지 않으므로 하위 클래스를 다시 작성하여 상위 클래스의 필드와 메서드를 수정할 수 있습니다.

class Computer {
    public $_name = '联想';    protected function run() {
        echo '我是父类';
    }
}//重写其字段、方法class NoteBookComputer extends Computer {
    public $_name = 'IBM';    public function run() {
        echo '我是子类';
    }
}

재정의를 통해 상위 클래스 메소드 호출
때로는 재정의된 메서드를 통해 상위 클래스의 메서드 콘텐츠를 호출할 수 있어야 하는 경우도 있습니다. 이 경우
를 사용해야 합니다. 구문: 상위 클래스 이름::method(), parent::method()를 호출할 수 있습니다.

final 키워드는 클래스가 상속되는 것을 방지할 수 있습니다. 때로는 독립 클래스가 되기를 원하고 다른 클래스에서 상속 및 사용을 원하지 않는 경우도 있습니다.


3. 추상 클래스 및 메서드

추상 클래스의 특징:
* 추상 클래스는 인스턴스 개체를 생성할 수 없으며 상속만 가능합니다.

* 추상 메서드는 추상 클래스에 있어야 하며 추상 클래스에는 추상 메서드가 없을 수 있습니다.
* 상속 추상 클래스인 경우 하위 클래스는 상위 클래스의 모든 추상 메서드를 재정의해야 합니다.
* 추상으로 정의된 메서드는 호출 메서드(매개변수)만 선언하고 구현하지 않습니다.

abstract class Computer {
    abstract function run();}final class NotebookComputer extends Computer {
    public function run() {
        echo '抽象类的实现';
    }
}

3. 다형성
다형성은 OOP가 클래스가 사용되는 컨텍스트에 따라 클래스의 특성이나 동작을 재정의하거나 변경할 수 있거나 인터페이스의 여러 다른 구현이 다형성을 가질 수 있음을 의미합니다.

interface Computer {
    public function version();
    public function work();}class NotebookComputer implements Computer {
    public function version() {
        echo '联想<br>';
    }    public function work() {
        echo '笔记本正在随时携带运行!';
    }
}class desktopComputer implements Computer {
    public function version() {
        echo 'IBM';
    }    public function work() {
        echo '台式电脑正在工作站运行!';
    }
}class Person {
    public function run($type) {
        $type->version ();        $type->work ();
    }
}$person = new Person ();$desktopcomputer = new desktopComputer ();$notebookcomputer = new NoteBookComputer ();$person->run ( $notebookcomputer );

관련 추천 :


PHP 객체지향 식별 객체

php 객체지향 프로그래밍 개발 아이디어 및 사례 분석

PHP 객체지향 실무 기초지식

위 내용은 PHP 객체 지향 상속, 다형성 및 캡슐화 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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