php问题,新手,麻烦老手解答下
发布网友
发布时间:2023-01-06 12:25
我来回答
共2个回答
热心网友
时间:2023-10-18 08:45
$ok = new Person("刘化超", "男");
$ok1 = new student('123');
你上面的代码是分别建立了两个不同类的实例,student 与 person,并不是一样的东西。
虽然student继承自person,但你并没有在构造器__construct 中对 $name 和 $xb 成员进行初始化,而在 Person 中也没有在构造器中设置缺省数据。
由于在php中对于重载的支持不太好,因此,可以修改student类的构造器,示例代码如下:
function __construct($number)
{
$this->xh = $number;
$this->name = '无名'; //新增
$this->xb = '未知性别'; //新增
}
运行结果:
无名
未知性别
123
热心网友
时间:2023-10-18 08:45
初始化$ok1的时候,调用了类student的__construct($number)方法,只有xh被赋值123,其他的name,xb全是空,所以调用into方法时,输出了你所说的信息 ,要想达到你的效果,是可以实现的。
class student extends Person{
public $xh;
function __construct($name,$xb,$number){
parent::__construct($name,$xb);
$this->xh=$number; } function into(){ $into=$this->name."<br>"; $into.=$this->xb."<br>"; $into.=$this->xh."<br>"; return $into; } }
初始化student时,传递三个参数就行了。