① php 類的繼承問題
在PHP中類的繼承是使用最多的一個編程特性,我們可以創建一個基類(父類)然後在這其中定義一些基本的方法,在我們的子類我們可以擴展父類中的方法這就叫覆蓋,但是如果說你在父類的某些很關鍵的方法你不能被子類繼承,因為如果子類繼承了這個方法可能給程序帶來一定的麻煩,所以我們希望這個方法是「私有」的,是不能被擴展的,這在PHP使用了final關鍵字來修飾你要不被繼承的方法。
PHP final關鍵字可以修飾類同樣可以修改類中的方法,但它們的作用是差不多的,即如果你使用了final關鍵字來修飾了,那麼這個被修飾的類或者方法將不能被擴展或者繼承。你只能老老實實去引用它。如果你在類前面使用了final,這就是說明這個類不能使用繼承;如果你在方法前使用了PHP final關鍵字,這就是說明這個方法不能被覆蓋。
簡單的說,final就是防止父類覆蓋的,加上它就不會被父類覆蓋
② php的繼承問題
class mWorktime {
static protected $table = "worktime"; //本類對應的表
}
class mWorktime_tmp extends mWorktime {
static protected $table = "worktime_tmp"; //本類對應的表
static public function delete($id) {
if ($id == 1) {
echo parent::$table;
} else {
echo self::$table;
}
}
}
mWorktime_tmp::delete(1);
mWorktime_tmp::delete(2);
//這樣?
③ pphp循環體內的變數能繼承嗎
私有?還是公共?作用域?什麼叫循環體?循環體還不是是在方法裡面。問問題還是考慮下再問嘛
④ php繼承問題
上面這個例子中B基本上是不存在意義的,也就是無的過程,下面是程序運行過程中B完全沒有參與,在$b = new B("b_1", "b_2"),B繼承A,然後運行A的構造函數(B沒有自己的構造函數)。在$b->print_other($a); 一行中,運行的A的print_other函數,這個是公共函數,請看函數的定義
public function print_other(A $other),這里有類型暗示,也就是函數接受的參數是A類,所以print_other函數使用的參數也是A類,而不是B,B沒有直接調用$priv。$priv 不能被繼承,但是可以在父類中被調用和輸出,只是不能直接用B來訪問,B實例化的時候A同樣被實例化了,不然如何能夠調用父類的屬性
下面是這個程序運行過程
0.0014 70936 +712 -> A->__construct($a = 'a_1', $b = 'a_2')
0.0015 71304 +368 -> A->__construct($a = 'other_a_1', $b = 'other_a_2')
0.0016 71680 +376 -> A->__construct($a = 'b_1', $b = 'b_2')
0.0016 71824 +144 -> A->print_other($other = class A { protected $prot = 'a_1'; private $priv = 'a_2' })
0.0017 71928 +104 -> A->print_other($other = class B { protected $prot = 'b_1'; private ${A}:priv = 'b_2' })
0.0018 71928 +0 -> A->print_other($other = class A { protected $prot = 'a_1'; private $priv = 'a_2' })
⑤ PHP私有屬性繼承問題
你設置了 private $Pname; 為私有變數 就導致了你的派生類是無法訪問父類的成員可以使用 protected $Pname 這樣就可以使得派生類和基類都能范圍該類的成員。 ===你初始化$student=new Student('1','zhangsan','18','男','9月23');後 不用重載parent::IT(); 這樣只能echo出父類的那句話。。你要的是覆蓋的效果 所以直接echo "$this->Pname 的工作是學生<br>"; 就可以了
⑥ PHP面向對象那個繼承是什麼意思而construct這個構造函數是什麼意思 可以舉個例子嗎
子類可以繼承父類裡面的方法可以直接調用,construct這個是初始化,每次執行類裡面的方法先要初始化一下在執行你要用的函數,這個裡面就可以寫一些公用的東西
⑦ thinkPHP 繼承的問題
公用變數,在最外層定義,在每個方法中都可以用,
在function _initalize()構造函數中已經給$this->model_name賦值,
所以在 function index中也是有值的,
在構造函數中把CONTROLLER_NAME 答應出來看看 這個就是賦給this->model_name得值
⑧ php的抽象類被子類繼承後,子類實例什麼訪問不了父類的變數
<?php
abstractclassaa{
public$aa;
publicfunctionvvv(){
}
}
classbbextendsaa{
function__construct(){
$this->aa=1;
}
functionvvv(){
echo"-----------".$this->aa;
}
}
$p=newbb();
$p->vvv();
?>
構造方法寫錯了__construct
⑨ php怎樣繼承變數
function logged(){
global $db,$sessions,$time_now;
.....
}
⑩ 關於php 構架和繼承類的問題和成員變數是什麼意思
public function __construct($name,$age,$avirpois,$sex,$height){//定義個構造 構架是起到什麼作用的
構造函數就是當你new一個對象的時候自動執行的
$this->name=$name; //繼承了父類為什麼這里還要調用成員變數
你new zilei("李亞","165"); 執行子類的構造函數,構造函數中給父類的成員變數賦值,並不執行父類的構造方法,要執行的話就要在子類中加parent::__construct