update : 2015.11.03
php.shukuma.com검색:
|
클래스 추상화PHP 5 에서 abstract 클래스와 메서드가 소개 되었습니다. abstract 클래스는 인스턴스화 될수 없으며, 최소한 하나의 abstract 메서드 또한 포함되어 있어야 합니다. abstract 메서드는 선언만 가능합니다. - 구현부를 가질순 없습니다. abstract 클래스로부터 상속받을때, abstract로 명시된 메서드중 부모 클래스에 정의된 메서드일 경우 반드시 자식 클래스에서 그 구현부를 정의해 줘야 합니다. 또한 해당 메서드들은 반드시 동일한 access 지정자를 가져야 합니다(visibility). 예를 들어, abstract 메서드가 protected 로 선언 되어 있다면, 이의 구현 함수는 반드시 protected나 public으로 선언되어야만 합니다. private 은 안됩니다. 그리고, 메서드의 선언이 동일해야 합니다. 예를 들면... 메서드명, 인자의 개수, 인자의 타입, 리턴 타입 등이 동일해야 합니다. 하지만 자식 클래스의 메서드에 추가 인자가 붙을 경우에는 예외로 합니다. 위의 사항은 5.4 버전의 생성자에도 유효하게 적용됩니다. 5.4 이전에는 생성자 선언이 달라도 됐습니다. Example #1 추상 클래스 예제
<?php 위 예제의 출력: ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass2 Example #2 추상 클래스 예제
<?php 위 예제의 출력: Mr. Pacman Mrs. Pacwoman 사용자정의 클래스 또는 함수중 abstract가 정의되지 않은 오래된 코드는 수정하지 않아도 동작할 것입니다. |