子类中未定义的方法

时间:2012-03-17 04:47:38

标签: php object

<?php

abstract class file
{
    private $pid;
    private $uid;
    public function  __construct($pid,$uid)
    {
        $this->pid = $pid;
        $this->uid = $uid;
    }

    public function valid()
    {
        if($_SESSION['level']<$this->pid)
        {
            return true;
        }
        else
            return false;
    }
    public function allow()
    { 
        return "This is all right!";
    }

}
?>



    <?php
    // put your code here
    include("../file.php");
    session_start();
    class android extends file
    {
        public function __construct($pid,$uid)
        {
            parent::__construct($pid, $uid);

        }
    }

    $uid = $_SESSION['id'];
    $pa = new android(1,$uid);
    if($pa->valid())
            echo $pa->allow();
    else
            echo "<h1>No permission<h1>"

    ?>

上面的类是android类,上面的那个是文件..现在当android扩展(继承)文件类时,它意味着它拥有所有方法。但是当我尝试运行程序时,它表示未定义的变量android :: allow() 我不明白,因为我已经在文件类中定义了allow()函数,因此android类也应该继承该方法。 请帮助..提前致谢。

1 个答案:

答案 0 :(得分:0)

根据http://www.php.net/manual/en/language.oop5.abstract.php

  

定义为抽象的类可能无法实例化

如果您的文件类没有任何抽象方法,请不要将其声明为抽象,否则请避免调用构造函数;)