추상 클래스가 다른 추상 클래스를 상속하는 경우 추상 상위 클래스의 추상 메소드를 추상 클래스에서 재정의할 수 없습니다. 이러한 사용법은 추상 클래스의 확장으로 이해될 수 있습니다.
다음 예에서는 추상 클래스가 다른 추상 클래스에서 상속할 때 추상 메서드를 재정의할 필요가 없음을 보여줍니다.
<? abstract class User { protected $sal = 0; abstract function getSal(); abstract function setSal($sal); } abstract class VipUser extends User { } ?>
추상 클래스가 상속된 후에는 해당 추상 메서드를 재정의할 수 없습니다. 덮어쓰기가 발생하면 시스템에서 오류를 보고합니다.
<? abstract class User { protected $sal = 0; abstract function getSal(); abstract function setSal($sal); } abstract class VipUser extends User { abstract function setSal(); } ?>
프로그램 실행 결과:
Fatal error: Can't inherit abstract function User::setSal() (previously declared abstract in VipUser) in E:\PH
결론: 추상 클래스는 추상 클래스 확장을 목적으로 추상 클래스를 상속합니다.
<? abstract class User { protected $sal = 0; abstract function getSal(); abstract function setSal($sal); } abstract class VipUser extends User { protected $commision = 0; static abstract function getCommision(); abstract function setCommision(); } ?>
위 코드는 상위 클래스의 메서드를 확장합니다