我已经创建了一个非常基本类型的类,如上所述,为什么子对象无法从其父对象访问继承的函数?我添加了一个新字段和新构造函数。 show_param()
在父类中定义但我不能在子类中使用它?!
<?php
class Test {
private $age;
private $fname;
private $lname;
public function __construct($age,$fname,$lname)
{
$this->age = $age;
$this->fname = $fname;
$this->lname = $lname;
echo "A new constructor in " . __CLASS__ . ".<br />";
}
public function __destruct()
{
echo 'The class "', __CLASS__, '" was destroyed.<br />';
}
public function set_age($age)
{
$this->age = $age;
}
public function get_age()
{
return $this->age;
}
public function __toString()
{
return $this->fname." ".$this->lname;
}
public function show_param()
{
echo $this->age."<br />";
echo $this->fname."<br />";
echo $this->lname."<br />";
}
}
//Child definition
class T1 extends Test
{
private $level;
public function __construct($age,$fname,$lname,$level)
{
$this->level = $level;
$this->age = $age;
$this->fname = $fname;
$this->lname = $lname;
echo "A child constructor in " . __CLASS__ . ".<br />";
}
public function get_level()
{
return $this->level;
}
public function set_level($level)
{
$this->level= $level;
}
}
$a = new T1(23,"Bernard","Grey","Under");
echo $a->show_param();
?>
结果:
T1中的子构造函数。 T1中的子构造函数。
“测试”课程被摧毁。 “测试”课程被摧毁。
预期:
T1中的子构造函数。 T1中的子构造函数。 伯纳德 灰色 23 “测试”课程被摧毁。 “测试”课程被摧毁。
答案 0 :(得分:2)
在T1类中使用parent`s构造函数:
class T1 extends Test
{
private $level;
public function __construct($age,$fname,$lname,$level)
{
parent::__construct($age,$fname,$lname);
$this->level = $level;
echo "A child constructor in " . __CLASS__ . ".<br />";
}
public function get_level()
{
return $this->level;
}
public function set_level($level)
{
$this->level= $level;
}
}