Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php超类如何访问其子类的受保护方法?_Php_Oop - Fatal编程技术网

php超类如何访问其子类的受保护方法?

php超类如何访问其子类的受保护方法?,php,oop,Php,Oop,我今天才注意到这种行为——很奇怪,我很确定在java中,您只能访问继承链上游的受保护方法,因为走另一条路违反了封装 这种行为在语言中有原因吗?这在Java中也是允许的。但是,Java中可能允许这样做,因为受保护也被认为是包级别的作用域,而不仅仅是在继承链中被降级为访问。我发现,当父级中定义的一个方法只需要其功能的一小部分根据扩展类类型进行更改时,它很有用。您可以从父类中调用抽象方法,它的功能会根据需要随子类中该方法的定义而更改 我还要补充一点,兄弟类也可以访问彼此的受保护属性和方法,只要它们在父

我今天才注意到这种行为——很奇怪,我很确定在java中,您只能访问继承链上游的受保护方法,因为走另一条路违反了封装


这种行为在语言中有原因吗?

这在Java中也是允许的。但是,Java中可能允许这样做,因为受保护也被认为是包级别的作用域,而不仅仅是在继承链中被降级为访问。

我发现,当父级中定义的一个方法只需要其功能的一小部分根据扩展类类型进行更改时,它很有用。您可以从父类中调用抽象方法,它的功能会根据需要随子类中该方法的定义而更改


我还要补充一点,兄弟类也可以访问彼此的受保护属性和方法,只要它们在父类中声明(这可以是抽象的,也可以不是抽象的)。

Keith,允许兄弟类访问彼此继承的受保护属性,您知道这在不同语言中是否有所不同吗?如果在Java中“protected”表示包级访问,那么两个具有自定义(非继承)受保护属性的兄弟类仍然在同一个包中,但它们不能相互访问?谢谢
protected != private