PHP中,为什么子类可以访问父类的私有属性,而且可以直接调用

PHP中,为什么子类可以访问父类的私有属性,而且可以直接调用,第1张

你写的不对哦。

按你写的,

name

子类属性,而不是父类的。

这样:

<php

class

Person

{

private

$name="zhangsan";

}

class

Man

extends

Person

{

}

$m

=

new

Man();

//$m->name="zhangsan";

echo

$m->name;

>

子类继承父类,子类拥有了父类的所有属性和方法

程序验证,父类的私有属性和方法子类是无法直接访问的。当然私有属性可以通过public修饰的getter和setter方法访问到的,但是私有方法不行。

假设:子类不能够继承父类的私有属性和方法

那么:分析内存后,会发现,当一个子类被实例化的时候,默认会先调用父类的构造方法对父类进行初始化,即在内存中创建一个父类对象,然后再父类对象的外部放上子类独有的属性,两者合起来成为一个子类的对象。

所以:子类继承了父类的所有属性和方法或子类拥有父类的所有属性和方法是对的,只不过父类的私有属性和方法,子类是无法直接访问到的。即只是拥有,但是无法使用。

private属性是私有的,在子类是无法访问的。如果必须要访问,可以采用反射的方法,获取父类的class,然后拿到field,再然后setAccessible=true来进行访问。

首先你这逻辑就有问题,子类不继承父类

那么他就是一个单独的

基类

,跟父类没有关系,如果想调用你说的父类里方法

可以在你新的这个类里使用关键词

new

实例化这个父类对象

再去调用里面的方法,当然

三个等级

你只能使用父类里的公共方法

公共属性,或者你想要调用私有private

和受保护

protected

的方法时

需要在该类下面使用

魔术方法

__get();

以上就是关于PHP中,为什么子类可以访问父类的私有属性,而且可以直接调用全部的内容,包括:PHP中,为什么子类可以访问父类的私有属性,而且可以直接调用、Java中子类能够继承父类的private属性或方法吗、java private私有属性怎么在子类中访问等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9598083.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存