PHPの抽象クラスが抽象クラスを継承する場合の注意点

高洛峰
リリース: 2016-10-17 10:16:31
オリジナル
1358 人が閲覧しました

抽象クラスが他の抽象クラスを継承する場合、抽象親クラスの抽象メソッドを抽象クラスでオーバーライドすることはできません。このような使用法は、抽象クラスの拡張として理解できます。

次の例は、抽象クラスが別の抽象クラスを継承するときに、抽象メソッドをオーバーライドする必要がないことを示しています。

<?
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&#39;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();   
}
?>
ログイン後にコピー

上記のコードは親クラスのメソッドを拡張します

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート