나는 추상 클래스와 인터페이스의 차이에 대해 배우고 있지만 이지만 실용적인 예가없는 경우 이론적 설명은 이해하기 어렵다. 읽은 내용 : 기본 클래스를 업데이트하면 모든 상속하는 클래스가 자동으로 변경되어 업데이트됩니다. 반면에 인터페이스는 생성 된 후에는 변경할 수 없습니다. 새 버전의 인터페이스가 필요한 경우 완전히 새로운 인터페이스를 만들어야합니다. 만약 누군가가 내게이 라인에 대한 실질적인 예를 제공 할 수 있습니다. 나는 매우 감사 할 것입니다. 즐거운 한 주를 기원합니다.PHP, OOP 실용 사례
답변
이 예제를 고려하십시오. 우리는 운전 가능한 인터페이스, 자동차 추상, 그리고 둘 다 사용하는 핀토 클래스를 가지고 있습니다.
interface Drivable
{
public function go();
}
abstract class Automobile
{
public $type;
public function getType() {
return $this->type;
}
}
class Pinto
extends Automobile
implements Drivable
{
public function go() {
// code to make it go
}
}
우리는 쉽게 Automobile
에서 그들을 정의하여 모든 자동차에 방법을 추가 할 수 있습니다. 거기에 추가 된 새로운 메소드는 모든 확장 클래스에서 사용할 수 있습니다.
그러나 Drivable 인터페이스에 메서드를 추가하는 경우 새 메서드를 추가하기 위해 메서드를 구현하는 모든 클래스에서 해당 메서드를 찾아 구현해야합니다. 그렇지 않으면 컴파일되지 않습니다.
예를 들어 인터페이스에 stop()
메소드를 추가한다고 가정 해 보겠습니다. Pinto
은 stop
메서드가 없으므로 즉시 오류가 발생합니다.
인터페이스를 변경할 수 있습니다. 상속하는 클래스의 모든 변경 사항 만 구현하면됩니다. 예를 들어, SpaceShip 인터페이스를 만들고 있으며 CoolEnemyShip, StupidEnemyShip, PlayerShip이 있고 Boost() 함수와 같은 새로운 기능을 추가하기 위해 SpaceShip에 새로운 함수를 추가 한 경우 3 구현에서 Boost() 함수를 구현해야합니다 (CoolEnemyShip, StupidEnemyShip, PlayerShip)
반면에 SpaceShip이 기본 클래스이고 Boost() 함수를 구현하면 모든 상속 클래스에 Boost() 함수가 생깁니다. 가장 큰 차이점은 코드를 이해하는 데 코드가 필요하지 않으며 유추만으로도 충분하다는 것입니다.
요약 기본 클래스는 클래스를 상속하는 기능을 만들기위한 것입니다.
인터페이스는이 인터페이스를 사용하는 클래스에 의해 구현되어야하는 엄격한 기능 집합을 정의하기위한 것입니다.
추상 클래스는 메소드를 추상적으로 표시하여 구현을 상속하는 클래스로 남겨놓을 수 있다는 점에서 약간 겹쳐 있습니다.
여러분의 설명으로 이해한다면 추상 클래스를 사용할 때 추상 클래스를 상속받은 클래스는 Bodiless 추상 클래스 메소드를 오버라이드합니다. 또는 메소드를 계속 무시합니다. – Blanktext
- 1. 키워드 - 디버거 | 실용 사례
- 2. 실용 Zend_ACL + Zend_Auth 구현 및 모범 사례
- 3. 모범 사례 - oop 디자인
- 4. PHP OOP 아키텍처 질문 (역할에 대한 OOP)
- 5. 간단한 모델을위한 PHP OOP 디자인
- 6. PHP OOP 클래스 도움말
- 7. PHP : OOP 및 메서드
- 8. php oop 생성자
- 9. PHP OOP 질문
- 10. OOP - 세션 및 PHP
- 11. php parse_ini_file oop & deep
- 12. PHP OOP 클래스 변수
- 13. PHP, OOP, 다른 배합
- 14. PHP OOP 프로그래밍 질문
- 15. PHP OOP 데이터베이스 디자인
- 16. PHP OOP : 방법 체인이
- 17. PHP OOP 및 배열
- 18. PHP OOP "구현이 호환되어야합니다."
- 19. PHP OOP : 왜 게터인가?
- 20. PHP OOP routing
- 21. php OOP 함수 선언
- 22. PHP OOP 건축 문제
- 23. PHP, OOP 인터페이스와 추상화
- 24. PHP, OOP, 정적
- 25. PHP OOP - 확장 클래스
- 26. PHP OOP 디자인 패턴
- 27. OOP 클래스의 PHP FILTER_CALLBACK
- 28. OOP PHP - get_object_vars
- 29. 간단한 oop-php 질문
- 30. PHP OOP 호출 방법은
이 질문은 여러 번 묻고 토론했습니다 (http://stackoverflow.com/search?q=Class+vs.+Interface). –