>백엔드 개발 >PHP 튜토리얼 >코드 예제 분석: PHP 인터페이스와 추상 클래스의 차이점은 무엇입니까?

코드 예제 분석: PHP 인터페이스와 추상 클래스의 차이점은 무엇입니까?

伊谢尔伦
伊谢尔伦원래의
2017-07-03 09:31:281233검색

이 글은 PHP의 InterfaceAbstract 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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