當前位置:首頁 » 編程語言 » php方法重載

php方法重載

發布時間: 2022-06-26 23:02:08

A. php構造器是不是不能重載 - PHP進階討論

原帖由 於 2008-9-28 09:53 發表 [i][/url]重載:(overload)1.在同一個類中;(不單單是類中,普通函數也包括)2.方法名相同;3.參數個數或者參數類型不同(如果參數類型和個數相同,但是類型順序不同也是重載!)4.與返回類型無關勞倫斯兄弟說得對,PH ... [/b]龍兄說對了關鍵的概念沒弄清楚吧,名詞與用途沒有對上號。1、弄清概念:重載(overload)、重寫(override)、繼承(extends)2、PHP是弱類型,重載根據變數類型和個數不同而進行,所以只能模擬重載。3、PHP支持在繼承類中重寫(覆蓋)方法。4、構造函數(_construct)可以被繼承。

B. php繼承中方法重載(覆蓋)的應用場合

本文實例分析了php繼承中方法重載(覆蓋)的應用場合。分享給大家供大家參考。具體分析如下:
方法重載(override)/覆蓋——在什麼情況下使用:當父類知道所有的子類都需要用到一個方法,但父類不知道怎麼去寫這個方法時,就需要用到方法的重載。這時候,可以讓子類去重寫,來覆蓋這個方法。
通俗實例——父類(動物)知道其子類(貓和狗)都會叫,但它們的叫法都不一樣,所以父類沒法去寫這個方法,只能讓子類(貓和狗)去定義。代碼如下:
<?php
class
Animal{
public
$name;
protected
$price;
function
cry(){
echo
"不知道動物怎麼叫";
}
}
class
Dog
extends
Animal{
function
cry(){
echo
"汪汪...";
}
}
class
Pig
extends
Animal{
function
cry(){
echo
"哼哼..."
}
}
?>
方法重載/覆蓋的要點與細節(讀起來有點呦口):
1、要求子類的方法,其方法名稱、參數列表與父類方法一模一樣。如例子中cry(),不能添加參數,改成cry($naaa)等。注意:這里並不要求參數名一樣,只是要求參數的個數是一樣的。
2、所謂的重載或覆蓋,並不是將父類的方法覆蓋。也可以這么理解:如果子類有調用該方法時,如果在自己類里找不到這個方法,那麼它會去找父類里,看有沒有這個方法。這也是多態的理解
3、如果子類里某個方法,要把父類里相同名稱方法里的內容繼承下來,可以使用
parent::方法名

父類名::方法名
繼承。在子類定義的方法內使用。
4、訪問許可權問題,子類的訪問范圍>=父類的訪問范圍,即如果父類是protected
function
cry(),子類則只能是protected或public。
希望本文所述對大家的php程序設計有所幫助。

C. PHP中 重載函數 __get() __set() _call作用及參數是什麼

void __set ( string $name , mixed $value )
__set在對類內不可訪問的成員賦值時被調用,$name是成員名,$value是賦的值
mixed __get ( string $name )
__get在對內類內不可訪問的成員取值時被調用,$name是成員名
mixed __call ( string $name , array $arguments )
__call在對類內不可訪問的方法調用時被調用,$name是方法名,$arguments是調用這個方法提供的參數

D. PHP重載 有什麼用

用到的情況還是很多的 比方說 你在做底層開發時 經常會創建一些共有的 變數 就要載入這些數據 這是就得用這些函數了

E. 什麼是PHP面向對象中的重載重寫

封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的介面訪問其他對象。

重載是一個類裡面多態性的體現

重寫是父類和子類多態性的體現

F. php 到底可不可以重載

php 作為一種弱類型語言,本身不能像強類型如java ,c++那樣,直接的實現重載。不過可以通過一些方法,間接的實現重載。

  1. 使用一個統一的函數來實現重載。該方法要使用func_get_args()和func_num_args()方法。

<?php

functiontest1($name){
echo$name;
}

functiontest2($name,$age){
echo$name.$age;
}

functionload(){
//返回輸入的元素數目
$num=func_num_args();
//返回輸入元素列表的數組形式
$arr=func_get_args();

if($num==1){
test1($arr[0]);
}else{
test2($arr[0],$arr[1]);
}
}

load("a");
echo"<br/>";
load("a","b");
?>


2.當對象試著調用不存在或者受許可權限制的方法時,__call()方法會被自動調用,從而可以實現類型重載的效果。該方法是php5新增的方法。

<?php
classA{
//name:調用的方法名字。args:參數列表
function__call($name,$args){
$num=count($args);
if($num==1){
$this->test1($args[0]);
}
else{
$this->test2($args[0],$args[1]);
}
}

functiontest1($name){
echo$name;
}
functiontest2($name,$age){
echo$name."".$age;
}
}

$a=newA();
$a->a("a");
echo"<br/>";
$a->a("a","b");

?>

G. php 有方法重載嗎

直接重載是無法實現的.但是可以通過__call()方法來變相實現.實際上這個方法是PHP開發者偷懶,才想出這么一個拐彎抹角的方法,而且用這個方法實現的重載程度非常有限,尤其是構造器重載,已經不是真正意義上的構造器。構造器在對象被創建時自動執行,一般不會顯式的調用。而用__call()方法實現的構造器必須顯示的調用,也就是說構造函數與普通函數的性質完全相同,只不過功能不同而已了。

http://www.nowamagic.net/php/php_Override.php

H. php中如何實現函數重載呢

PHP本身不能函數重載的,不過你可以使用類中的__call的魔術方法來實現。該魔術方法接受兩個參數,一個數方法的名稱,一個是包含該方法參數的數組。當對一個類調用一個不可見的方法時(比如該方法是private或者根本沒有這個方法)被觸發調用。

I. php默認構造函數 重載操作 析構函數的差別

構造是new
一個類的時候的,初始化調用的,通常命名為類名或者__construct
php裡面因為無類型,所有沒有
重載,只能模擬重載
析構在類釋放的時候調用,不常用

熱點內容
普通電腦做伺服器怎麼操作 發布:2025-02-05 01:46:22 瀏覽:628
原神為什麼同伺服器加不起好友 發布:2025-02-05 01:41:03 瀏覽:336
android連接列印機 發布:2025-02-05 01:40:09 瀏覽:958
外國電腦代理伺服器地址埠 發布:2025-02-05 01:38:30 瀏覽:387
德意龍滑鼠宏怎麼配置 發布:2025-02-05 01:34:13 瀏覽:318
腳本程序功能 發布:2025-02-05 01:32:13 瀏覽:894
java棧存儲 發布:2025-02-05 01:30:03 瀏覽:987
三江主機的原始密碼多少 發布:2025-02-05 01:15:38 瀏覽:794
thrift源碼 發布:2025-02-05 01:07:41 瀏覽:922
特斯拉y要買哪個配置 發布:2025-02-05 01:07:40 瀏覽:125