이 글은 PHP의 Interface와 Abstract Class의 차이점에 대한 자세한 분석 및 소개입니다. 필요한 친구들은 참고하면 됩니다.
인터페이스와 추상 클래스는 인용이 매우 유사합니다. 메소드는 동일합니다. 정의된 논리가 없으며 하위 클래스가 원하거나 inherit하는 것이 전부입니다. 둘을 구별하려면 한 문장만 기억하세요. 인터페이스는 사양이고 클래스는 구현입니다. 인터페이스의 목적은 모든 사람이 준수하는 사양을 정의하는 것입니다.
즉, 인터페이스와 추상 클래스는 목적 측면에서 명확하게 구분될 수 있습니다. 그렇다면 여전히 질문이 있습니다. 변명이 있는데 왜 여전히 추상 클래스가 있습니까?
Dog와 Cattle이라는 두 하위 집합이 있는 Animal이라는 클래스를 정의하는 데 참여하세요. 두 하위 집합에는 모두 run() 메서드와 talk() 메서드라는 두 가지 메서드가 있습니다.
Dog and Cattle의 "run"이 동일하므로 run() 메서드의 비즈니스 로직이 동일하고 "speak"가 다르기 때문에 talk() 메서드의 비즈니스 로직이 다르다고 가정합니다. 또한 이 두 메서드가 있어야 한다고 규정하는 IAnimal 인터페이스가 있습니다. 이는 Animal 클래스가 이 두 메서드를 구현해야 함을 의미합니다. 마찬가지로 두 하위 클래스인 Dog 및 Cattle에도 이 두 메서드가 있어야 하며 다음과 같이 정의할 수 있습니다. 이 :
코드는 다음과 같습니다
<?php interface IAnimal{ public function run(); public function speak(); } class Animal implements IAnimal{ public function run(){ //在这里可以添加一些相同的run逻辑 return "same run<br />"; } public function speak(){ //这里可以添加一些相同的speak逻辑 return "same speak<br />"; } } class Dog extends Animal{ public function speak(){ //在这里可以添加一些Dog逻辑 return "Dog speak<br />"; } } class Cattle extends Animal{ public function speak(){ //在这里可以添加一些Cattle逻辑 return "Cattle speak<br />"; } } $oDog=new Dog(); echo($oDog->run()); echo($oDog->speak()); $oCattle=new Cattle(); echo($oCattle->run()); echo($oCattle->speak()); ?>
위 내용은 코드 예제 분석: PHP 인터페이스와 추상 클래스의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!