永发信息网

PHP子类怎么调用父类的属性

答案:2  悬赏:0  手机版
解决时间 2021-05-10 07:12
  • 提问者网友:王者佥
  • 2021-05-10 00:51

class Perpon
 {
  private $Pid;
  private $Pname;
  private $Page;
  private $Psex;
  private $Pbirthday;
  public function __construct($Pid,$Pname,$Page,$Psex,$Pbirthday)//PHP5中间的构造函数
  {
   $this->Pid=$Pid;
   $this->Pname=$Pname;
   $this->Page=$Page;
   $this->Pbirthday=$Pbirthday;
   echo "创建了一个对象"."<br>";
   
  }
  public function __set($name,$value)
  {
   $this->$name=$value;
  }
  function show(){
   echo ("我的姓名:$this->Pname,我的年龄:$this->Page,我的性别是:$this->Psex,我的生日是$this->Pbirthday <br>");
  } 
  public function __get($name)
  {
   return $name;
  }
  public function dining()
  {
   echo "$this->Pname 正在吃饭 <br>";
  }
  public function shuohua()
  {
   echo "$this->Pname喜欢说话 <br>";
  }
  public function gaosu()
  {
   echo "我的姓名叫做$this->Pname <br>"; 
  }
  public function IT()
  {
   echo "$this->Pname 的工作是IT行业 <br>"; 
  }

 }
 class Student extends Perpon
 {
  public function __construct()//PHP5中间的构造函数
  {
   echo "子类的构造函数";
  }
  public function IT()//PHP5中间的构造函数
  {
   parent::IT();
   echo "$this->Pname 的工作是学生<br>"; 
   
  }
  
 }
  
 $perpon=new Perpon('1','zhangsan','18','男','9月23');
 $perpon->show();
 $perpon->dining();
 $perpon->shuohua();
 $perpon->gaosu();
 $perpon->IT();
 
 $student=new Student();
  $student->IT();
?>

 

子类的IT方法调不到父类的Pname属性

最佳答案
  • 五星知识达人网友:狂恋
  • 2021-05-10 02:21

你设置了 private $Pname; 为私有变量 就导致了你的派生类是无法访问父类的成员


可以使用 protected $Pname 这样就可以使得派生类和基类都能范围该类的成员。 


===


你初始化$student=new Student('1','zhangsan','18','男','9月23');后 不用重载parent::IT(); 这样只能echo出父类的那句话。。你要的是覆盖的效果 所以直接echo "$this->Pname 的工作是学生<br>";  就可以了

全部回答
  • 1楼网友:举杯邀酒敬孤独
  • 2021-05-10 03:41

private只有父类自己才能使用

protected子类和父类才可以使用

如果你把子类实例化了 而没有生成父类的对象 那么你要在子类的构造函数里面 用parent调用父类的构造函数 这样才能在子类实例化的时候使用父类的 属性和函数

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯