php,子類無法訪問父類私有屬性,子類例項化再賦值後,子類所新增的新成員屬性不存在

時間 2021-08-30 11:15:23

1樓:匿名使用者

這兩句沒問題

$student1->dance();

$student1->say();

問題出在這三句:

$student1->name='zhangsan';

$student1->age=20;

$student1->gender='male';

這三個都是私有成員,不能直接賦值,可以在基類中實現公共的set方法或者建構函式來賦值。

2樓:隋龍飛

因為父類的私有屬性是不可訪問的。子類繼承的時候,當然也就不存在這3個屬性,所以咯,也沒有辦法賦值和取值了。

3樓:匿名使用者

簡單解決

class humanbeing{

private $name;

private $age;

private $gender;

修改為public $name;

public $age;

public $gender;

php的抽象類被子類繼承後,子類例項什麼訪問不了父類的變數?

4樓:花臂華盛頓

<?php

abstract class aa

}class bb extends aa

function vvv()

}$p = new bb();

$p->vvv();

?>

構造bai方du法zhi寫dao錯版

了權__construct

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

在php裡,子類是不是可以繼承父類的私有屬性,但不能訪問啊?

5樓:

private表示私有的,只有本類內部可以使用。如果不想繼承但又能在外部使用 ,用protected。

/*例項一個student的物件,此時注意,這個物件並不會繼承父類humanbeing的三個 private變數$name,$age,$gender*/

$student1->name='zhangsan';

$student1->age=20;

$student1->gender='male';

/*這裡需要注意.很多人會誤以為是給父類humanbeing的三個屬性賦值了,這是錯的。這裡的賦值,僅僅是給子類student的三個屬性賦值。

上面的這三行**,僅僅是子類student的三個屬性賦值,和父類humanbeing的三個屬性,沒有任何關係,僅僅名字一樣而已*/

function say() and i am years old. i am .";}

/*這個是父類humanbeing的公有方法,(預設的是public的),這個方法中 $this -> name.這裡的$this 是指父類student,$this -> name是指父類student的屬性,從始至終,它並沒有被賦值,所以它是空的,(而且它也不能被賦值,因為是private),這裡的$student1->name='zhangsan';賦值操作,僅僅是修改子類student的$name */

6樓:

用print_r來檢測一下這個物件

註釋掉的時候

print_r($s1);

student object

([name:person:private] => ys)告訴我們name是person類私有的屬性當沒註釋掉的時候

print_r($s1);

student object

([name:person:private] => ys[name] => 子類

)告訴我們name是person類私有的屬性,有給student類新增了一個name屬性

我們還註釋掉,再修改如下

$s1 = new student();

$s1->name = '子類'; //新增一個屬性為name$s1->say();

跟上面一樣的結果

從這些除錯結果分析,繼承跟訪問可以這樣說是一個概念,私有不可以繼承過來。

你繼承的時候加的那個$this->name是又新新增了一個name屬性,跟父類的name屬性無關

在php裡,子類是不是可以繼承父類的私有屬性,但不能訪問?

7樓:

用print_r來檢測一下這個物件

註釋掉的時候

print_r($s1);

student object

([name:person:private] => ys)告訴我們name是person類私有的屬性回當沒註釋掉答的時候

print_r($s1);

student object

([name:person:private] => ys[name] => 子類

)告訴我們name是person類私有的屬性,有給student類新增了一個name屬性

我們還註釋掉,再修改如下

$s1 = new student();

$s1->name = '子類'; //新增一個屬性為name$s1->say();

跟上面一樣的結果

從這些除錯結果分析,繼承跟訪問可以這樣說是一個概念,私有不可以繼承過來。

你繼承的時候加的那個$this->name是又新新增了一個name屬性,跟父類的name屬性無關

無法訪問c盤,無法訪問C盤

鈔多 那你就是中毒了,去下個登錄檔修復器 進安全模式看能開啟c盤不,如果能開啟就進去把裡面的可疑的隱藏檔案給刪了他 開始 管理工具 本地安全策略,看看是不是c盤的訪問許可權太高了,改一下 開始 管理工具 本地安全策略,看看是不是c盤的訪問許可權太高了,改一下 開始 管理工具 本地安全策略,看看是不是...

手機無法訪問網路是怎麼回事,手機無法訪問網路怎麼辦?

若手機無法通過移動資料上網,建議您 1.下滑螢幕頂簾開啟移動資料。2.若以上操作後仍無法上網,建議重置手機上網引數 設定 行動網路 接入點名稱 更多 重置為預設設定。3.更換其他sim卡或換個時間段嘗試,排除網路問題。4.將手機升級至最新版本。5.若無效,請備份手機中資料將機器恢復出廠設定。若問題依...

無法訪問工作組

1全部是不是你想訪問他的電腦裡面的檔案呢?不同的工作組是不能互相訪問的 這樣解決 1 滑鼠右擊我的電腦點 屬性 2 然後點 計算機名 3 點 更改 然後彈出的對話方塊裡面輸入你想加入的工作組名稱4 重新啟動電腦 5 在網路上的芳鄰里面就可以找到你加入工作組的電腦了 昏倒,什麼亂七八糟的,登錄檔都出來...