>  기사  >  백엔드 개발  >  하나의 문서로 PHP 클래스, 개체, 추상 클래스 및 인터페이스를 이해하세요.

하나의 문서로 PHP 클래스, 개체, 추상 클래스 및 인터페이스를 이해하세요.

silencement
silencement앞으로
2020-01-22 00:07:112749검색

하나의 문서로 PHP 클래스, 개체, 추상 클래스 및 인터페이스를 이해하세요.

클래스 및 객체: 추상 클래스, 인터페이스

추상 클래스 및 인터페이스: 추상 클래스(추상 클래스)와 인터페이스(인터페이스)는 인스턴스화할 수 없는 특수 클래스입니다.

추상 클래스:

추상 클래스의 추상 메서드는 구체적인 구현이 없는 빈 메서드입니다. 추상 클래스는 하위 클래스에 대한 함수 정의를 설정하는 데 사용될 수 있으므로 추상 클래스는 개발자가 특정 상위 클래스(

)에서만 상속하도록 한 다음 상속된 하위 클래스에서 필요한 특정 기능을 완료하도록 합니다.

추상 클래스를 정의하는 구문 형식은 다음과 같습니다.

abstract class 类名称{
  //抽象类的成员变量列表
  abstract function 成员方法1([参数1],[参数2],……);
  abstract function 成员方法2([参数1],[参数2],……);
  //其他代码
}

추상 클래스는 일반 클래스와 유사하며 멤버 속성과 멤버 메서드도 가지고 있습니다. 차이점은 추상 클래스를 인스턴스화할 수 없다는 것입니다.

다음은 간단하고 완전한 추상 클래스를 정의합니다.

abstract class MyClass{ //定义抽象类
  abstract protected function myFunction($arg); //定义抽象方法
}

PS: 추상 클래스의 정의에는 구현 없이 abstract 키워드로 수정된 추상 메서드가 하나 이상 포함되어야 합니다.

추상 클래스의 구현 과정:

추상 클래스에서는 추상 메서드를 정의할 수 있을 뿐만 아니라 특정 기능을 완료할 수 있는 일부 멤버 메서드도 일반 클래스처럼 정의할 수 있습니다.

지정된 기능을 완료할 수 있는 멤버 메서드를 직접 참조하세요.

class 子类名称 extends 抽象类名称{
  //子类的成员变量列表
  
  function 抽象方法名称([参数1],[参数2],……){
      //抽象方法的具体实现
  }
  //其他代码
 }

PS: 클래스가 추상 클래스에서 상속되면 추상 클래스에 정의된 모든 메서드를 포함해야 합니다. 그렇지 않으면 런타임 중에 오류가 발생합니다.

다음은 추상 클래스 구현 예입니다.

abstract class Study{
  abstract function printStudy($name,$lang); //定义一个抽象方法
}
 
class OneStudy extends Study { //定义子类继承于父类
  function printStudy($name,$lang){ //抽象方法的具体实现
      echo $name."正在整理".$lang."……";
  }
 }
 
class TwoStudy extends Study {
  function printStudy($name,$lang){
      echo $name."正在整理".$lang."……";
    }
}
  $first=new OneStudy();
  $first->printStudy("大兵","PHP基础知识");
  echo "";
  $second=new TwoStudy();
  $second->printStudy("小兵","SEO基础知识");

프로그램 실행 결과는 다음과 같습니다.

Dabing은 PHP 기본 지식을 정리하고 있습니다.

Xiaobing은 SEO 기본 지식을 정리하고 있습니다. ...

인터페이스 정의:

인터페이스는 일부 빈 멤버 메서드 또는 일부 클래스 상수만 포함합니다. 이러한 빈 멤버 메서드는 인터페이스를 구현하는 클래스에 의해 구현됩니다.

인터페이스를 정의하려면 인터페이스 키워드를 사용해야 합니다. 구문 형식은 다음과 같습니다.

interface 接口名称{
  //类常量列表
  function 成员方法1([参数1],[参数2],……);
  function 成员方法2([参数1],[参数2],……);
  //其他代码
}

인터페이스를 인스턴스화할 수 없으므로 인터페이스에는 구성 방법이나 해체 방법만 제공하면 됩니다. 구현할 멤버 메서드 선언 집합입니다.

다음은 간단하고 완전한 인터페이스를 정의합니다.

interface class MyClass{ //定义接口
  public function myFunction($arg); //定义方法
}

인터페이스 구현 프로세스:

클래스와 유사하게 인터페이스도 상속될 수 있습니다. 인터페이스는 여러 인터페이스를 상속할 수 있지만 인터페이스는 클래스를 상속할 수 없습니다. 인터페이스를 구현하려면 Implements 키워드를 사용하세요.

클래스를 사용하여 인터페이스를 구현할 때는 적어도 인터페이스에 정의된 모든 메서드를 포함해야 합니다. 그렇지 않으면 런타임에 오류가 발생합니다.

다음은 인터페이스 구현 예입니다.

interface IName{ //定义接口IName
  function setName($name);
  function getName();
  }
  interface IAge{ //定义接口IAge
  function setAge($age);
  function getAge();
  }
  class DaBing implements IName,IAge{ //定义实现接口的类
  private $name;
  private $age;
  function setName($name){
  $this->name=$name;
  }
  function getName(){
  echo "姓名:".$this->name." ";
  }
  function setAge($age){
  $this->age=$age;
  }
  function getAge(){
  echo "年龄:".$this->age;
  }
  }
  $obj=new DaBing();
  $obj->setName("大兵");
  $obj->getName();
  $obj->setAge(25);
  $obj->getAge();

프로그램 실행 결과는

이름: 군인 나이: 25

추상 클래스와 인터페이스의 차이점:

인터페이스 사용은 다음을 통해 이루어집니다. 키워드는 를 구현합니다. 추상 클래스에 대한 작업은 키워드 확장을 상속하여 구현됩니다.

인터페이스에는 데이터 멤버가 없지만 추상 클래스에는 데이터 멤버가 있으며 추상 클래스는 데이터 폐쇄를 달성할 수 있습니다.

인터페이스에는 생성자가 없지만 추상 클래스에는 생성자가 있을 수 있습니다.

인터페이스의 메서드는 모두 공개 유형인 반면 추상 클래스의 메서드는 비공개, 보호 또는 공개로 수정될 수 있습니다.

클래스는 동시에 여러 인터페이스를 구현할 수 있지만 클래스는 하나의 추상 클래스에서만 상속할 수 있습니다.

인터페이스에는 멤버 메서드의 구현 코드가 있을 수 없지만 추상 클래스에는 멤버 메서드의 구현 코드가 있을 수 있습니다.

PS: 애플리케이션에서 특정 클래스에 더 많은 동작을 추가해야 하는 경우 이러한 동작을 결합하는 인터페이스를 정의할 수 있습니다. 특정 사물의 데이터와 동작을 재사용해야 하는 경우 이러한 변수와 함수를 캡슐화하는 추상 클래스를 정의해야 합니다.


위 내용은 하나의 문서로 PHP 클래스, 개체, 추상 클래스 및 인터페이스를 이해하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 www.liqingbo.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제