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

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

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屬性無關

php知道父類id查詢所有子類id,怎麼寫

function getallids id 樓主,可以參考這個文件http www.doc88.com p 989614539176.html裡面有php遞迴函式遍歷所有子分類id 查詢父節點的方法是 var obj document.getelementbyid a objparent obj.p...

關於php類成員屬性宣告和訪問的問題

團毒七七 你總共提了三個問題,三個問題都是關於訪問許可權控制的,建議你將物件導向的訪問許可權控制的那部分給學習一下。1 類裡的變數是否一定要宣告為成員屬性,答 不一定,在一個類中,有建構函式 屬性 方法 未在方法和建構函式中宣告的變數為屬性,屬性是體現這一個類 物件 的特性的描述,他是這個類的特性的...

困擾好久了,趕高手就我!關於C子類訪問父類protected成員

class car 繼承了 vehicle以後 this.weight 可以訪問。這叫繼承。或者 vehicle this weight 也可以。你在哪new那也叫例項化,跟繼承沒半毛錢關係。 陽光的雷咩咩 http msdn.microsoft.com zh cn library s9zta243...