클래스 및 객체: 추상 클래스, 인터페이스
추상 클래스 및 인터페이스: 추상 클래스(추상 클래스)와 인터페이스(인터페이스)는 인스턴스화할 수 없는 특수 클래스입니다.
추상 클래스:
추상 클래스의 추상 메서드는 구체적인 구현이 없는 빈 메서드입니다. 추상 클래스는 하위 클래스에 대한 함수 정의를 설정하는 데 사용될 수 있으므로 추상 클래스는 개발자가 특정 상위 클래스(
)에서만 상속하도록 한 다음 상속된 하위 클래스에서 필요한 특정 기능을 완료하도록 합니다.
추상 클래스를 정의하는 구문 형식은 다음과 같습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!