當前位置:首頁 » 編程語言 » php調用父類的方法

php調用父類的方法

發布時間: 2023-08-07 11:31:35

php 子類創建了個屬性如何調用父類屬性的值

classbextendsa{
扮敏轎public$b;
function__construct(){
$this->b=$this->attribute;
廳肆}
}

在屬性定義階拿廳段不能使用你說的那種語句,如果你想使用那種賦值語句的話可以放到構造函數裡面

❷ php如何通過子類繼承父類共有方法訪問父類私有屬性

在父類中加個public方法,
如private
$aaa
=
'test';
public
function
getAAA(){
return
$this->aaa;
}
在子類中調用parent::getAAA();就可以獲得父類私有屬性
當然如果你想獲取多個,可以改成動態變數名,
getAAA($v){
return
$this->{$v};
}

❸ php的子類能夠調用父類的方法么

<?php
classA{
functiontest(){
echo"hello!";
}
}
classBextendsA{//若A類和B類不在同一文件中請包含後(include)再操作
functiontest2(){
parent::test();//子類調用父類方法
echo"test2";
}
}
$a=newB();
$a->test();//hello!
$a->test2();//hello!test2
?>

❹ PHP 靜態方法怎麼調用父類非靜態方法

子類的靜態方法裡面實例化父類,然後調用父類的非靜態方法。
因為子類的靜態方法調用父類的方法需要使用parent::函數名()或有可能是self::函數名(),子類的靜態方法使用parent::函數名()或有可能是self::函數名()時這個函數名()必須是父類裡面的一個靜態方法,如果不是靜態方法,會報錯Strict Standards: Non-static method parentClass::b() should not be called statically,但是還是會有正確結果喲

❺ php 繼承父類 怎麼調用父類的方法

直接

$this->parent_function($parameter)

或者

parent::parent_function($parameter)

❻ 在php中,子類extends繼承了父類,當子類和父類同時存在構造函數__construct先執行哪一個呢

1、如果父類和子類中都沒有顯式的定義__construct,在實例化子類對象時,只會隱含的調用子類自己的構造方法。

2、如果父類中有顯式的構造方法__construct,而子類中沒有定義__construct,在實例化子類對象時,就會調用父類中的構造方法。

3、如果父類和子類中都顯式的定義了__construct,在實例化子類對象時,只會調用子類自己的構造方法(這就像是子類重構了父類的構造方法),而如果也想要調用父類的構造方法的話,就需要在子類的__construct 方法中顯式的調用,(如 __construct(){ parent::_construct();})。


(6)php調用父類的方法擴展閱讀

子類的構造函數名與子類名相同。

在子類里父類的構造函數不會自動執行。

要在子類里執行父類的構造函數,必須執行類似以下語句:

$this->[父類的構造函數名()]

類的構造函數統一命名為__construct()。

子類的構造函數名也是__construct()(也是廢話)。

在子類里父類的構造函數會不會執行,分兩種情況:

1、如子類不定義構造函數 __construct(),則父類的構造函數默認會被繼承下來,且會自動執行。

2、如子類定義了構造函數 __construct(),因為構造函數名也是__construct(),所以子類的構造函數實際上是覆蓋(override)了父類的構造函數。這時執行的是該子類的構造函數。

這時如果要在子類里執行父類的構造函數,必須執行類似以下語句:parent::__construct();

❼ php繼承一個父類,如何自動執行父類方法

你在父類寫一個成員函數 然後子類繼承 創建子類對象的時候 可以點出來父類的成員函數


比如

Student zs = new Student();

zs.SayHello() //點出來的是從父類的繼承來的成員函數

輸出結果為父類的->我是人類

publicclassPerson
{
publicvoidSayHello()//這只是父類的SayHello
{
echo"我是人類";
}
}

publicclassStudent:Person//已經繼承了Person父類
{
//我什麼都沒寫
}


❽ PHP繼承的問題,調用父類的方法this指向問題。

我來說一說:


【一】…………public(僅有)屬性和方法的繼承…………

classa{
public$var='vara<br/>';
publicfunctionm(){
echo'funa<br/>';
}
publicfunctionrun(){
echo$this->var;
$this->m();
}
}

classbextendsa{
public$var='varb<br/>';
publicfunctionm(){
echo'funb<br/>';
}
}
$li=newb();
$li->run();
echo'<hr>';
var_mp($li);

輸出:

varb
funb
————————————————————————————
object(b)[1]
public'var'=>string'varb<br/>'(length=11)

在這段代碼中所表示的,是我們常見的一種繼承方式,同為公有屬性的$var 和公有方法m()


在這里,$var和m()都被繼承並覆寫,實例化過後,內存中只有一個$var實例,通過var_mp($li);我們可以看到它。



【二】…………private(私有)屬性和方法的繼承…………

classa{
private$var='vara<br/>';
privatefunctionm(){
echo'funa<br/>';
}
publicfunctionrun(){
echo$this->var;
$this->m();
var_mp($this);
echo'<br/><br/>';
}
}

classbextendsa{
private$var='varb<br/>';
privatefunctionm(){
echo'funb<br/>';
}
publicfunctionrun(){
echo$this->var;
$this->m();
var_mp($this);
echo'<br/><br/>';
parent::run();
}
}
$li=newb();
$li->run();
echo'<hr>';
var_mp($li);

輸出:

varb
funb
object(b)[1]
private'var'=>string'varb<br/>'(length=11)
private'var'(a)=>string'vara<br/>'(length=11)
.
.
vara
funa
object(b)[1]
private'var'=>string'varb<br/>'(length=11)
private'var'(a)=>string'vara<br/>'(length=11)
.
————————————————————————————————
object(b)[1]
private'var'=>string'varb<br/>'(length=11)
private'var'(a)=>string'vara<br/>'(length=11)

這個時候,我們可以看到,在調用run方法時,首先它會調用到b類的私有屬性$var 和私有方法m(),隨後,又使用parent::run()調用父類的run()方法,我們可以看到,父類的run()方法調用後,它所調用的屬性和方法,都是a類的兩個私有屬性和方法,這種形式,和你的問題一致;


而它與$this指向無關,我們可以在這里看到,兩個$this都是指向b類。


而最有意思的是,在$li句柄中,我們卻看到了兩個屬性!一個是b類的屬性,一個是a類的屬性,這兩個屬性同時存在著,那麼,私有方法也自然是同時存在著。


【三】…………私有屬性和方法能不能被繼承…………

classa{
private$var='vara<br/>';
privatefunctionm(){
echo'funa<br/>';
}
}
classbextendsa{
publicfunctionrun(){
echo$this->var;
$this->m();
}
}
$li=newb();
$li->run();

輸出:

Notice:Undefinedproperty:b::$varinE:...onLine9
Fatalerror:Calltoprivatemethoda::m()fromcontext'b'inE:...onLine10

這可以證明,私有屬性和方法,無法被繼承,所以,你的代碼示例中所說,將a類的m()方法更改為private後,會顯示aa的屬性,也就可以理解明白了。

熱點內容
中國彩票的網是什麼密碼 發布:2025-03-21 07:25:06 瀏覽:442
蘋果稅與安卓哪個收費更狠 發布:2025-03-21 07:17:52 瀏覽:294
通過一個ip訪問兩台伺服器嗎 發布:2025-03-21 07:06:12 瀏覽:522
怎麼讓伺服器查不到我的ip地址 發布:2025-03-21 07:05:27 瀏覽:184
編譯器有什麼用 發布:2025-03-21 07:00:24 瀏覽:78
android百度雲盤 發布:2025-03-21 06:59:47 瀏覽:261
青雲存儲 發布:2025-03-21 06:50:03 瀏覽:403
王者榮耀有腳本嗎 發布:2025-03-21 06:50:00 瀏覽:806
c語言代碼運行 發布:2025-03-21 06:49:17 瀏覽:560
python打開文件夾下所有文件 發布:2025-03-21 06:44:34 瀏覽:951