① php子類可以繼承和訪問父類的私有屬性和方法嗎
你這樣理解也可以,當父類有私有的方法和屬性,子類是繼承不到的,所以子類不能訪問父類的私有方法和屬性。java
特性,private:類中只要限定為private的成員,只能被這個類本身訪問
② php 子類中如何調用父類的變數和方法
<?php class A{ public $a1='a1'; protected $a2='a2'; function test(){ echo "hello!<hr/>"; } } class B extends A{//若A類和B類不在同一文件中 請包含後(include)再操作 public $a1='b1'; function test2(){ $this->test(); parent::test();//子類調用父類方法 } function test() { echo $this->a1.','; echo $this->a2.','; echo "b2_test_hello<hr/>"; } } $a = new B(); $a->test();//b1,a2,b2_test_hello $a->test2();//b1,a2,b2_test_hello//hello! ?>方法的調用:$this->方法名();如果子類中有該方法則調用的是子類中的方法,若沒有則是調用父類中的
parent::則始終調用的是父類中的方法。
變數的調用:$this->變數名;如果子類中有該變數則調用的是子類中的,若沒有則調用的是父類中的
③ PHP中,為什麼子類可以訪問父類的私有屬性,而且可以直接調用
你寫的不對哦。
按你寫的,
name
是子類是屬性,而不是父類的。
這樣:
<?php
class
Person
{
private
$name="zhangsan";
}
class
Man
extends
Person
{
}
$m
=
new
Man();
//$m->name="zhangsan";
echo
$m->name;
?>
④ php 子類創建了個屬性如何調用父類屬性的值
classbextendsa{
public$b;
function__construct(){
$this->b=$this->attribute;
}
}
在屬性定義階段不能使用你說的那種語句,如果你想使用那種賦值語句的話可以放到構造函數裡面
⑤ php中子類怎麼調用父類的變數
實例:
<?phpclassA{
public$a1='a1';
protected$a2='a2';
}
classBextendsA{
//若A類和B類不在同一文件中請包含後(include)再操作
public$a1='b1';
functiontest(){
echo$this->a1.',';echo$this->a2.',';echo"b2_test_hello<hr/>";
}
}
$a=newB();
$a->test();
//b1,a2,b2_test_hello
$a->test2();//b1,a2,b2_test_hello//hello!
?>
變數的調用:$this->變數名;如果子類中有該變數則調用的是子類中的,
若沒有則調用的是父類中的
⑥ PHP子類怎麼調用父類的屬性
<?php
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();
echo "<hr>";
$student=new Student(); $student->IT();?>
調不到的原因是:
private $Pname;
記住:private只能自己調用,其他是不行的,這一點你自己記住即可。
⑦ PHP子類怎麼調用父類的屬性
父類的Pname
是
private
類型,也就是私有的只能父類自己的
函數調用
,子類以及外部是無法調用的。
如果這個變數只允許本類方法調用
應該用
private
方式調用,如果允許本類以及子類調用應該用
protected
保護)修飾,如果希望外部調用則應該用
public
公開修飾。這三個關鍵詞對函數同樣有效。
我把php.net關於這個的說明放在下面參考資料裡面了,你可以仔細看下。
⑧ php如何通過子類繼承父類共有方法訪問父類私有屬性
在父類中加個public方法,
如private
$aaa
=
'test';
public
function
getAAA(){
return
$this->aaa;
}
在子類中調用parent::getAAA();就可以獲得父類私有屬性
當然如果你想獲取多個,可以改成動態變數名,
getAAA($v){
return
$this->{$v};
}