php - 关于 PHP 中的 OO 和类的几个问题

标签 php class oop

我正在学习 OO 和类,我有几个关于 PHP 中的 OO 和类的问题

  1. 据我了解,扩展另一个类的类仅意味着扩展另一个类的类可以访问它所扩展的类的变量/属性和函数/方法。这是正确的吗?

  2. 我知道静态方法或属性基本上与类外的过程函数或变量相同,几乎可以在任何地方使用。这是正确的吗?

  3. Public 表示任何类都可以访问它,Private 表示只有封装在其中的类或从其所有者扩展的类才能访问和使用。这是正确的吗?

最佳答案

1) 是的,没错。子类继承其父类的任何 protectedpublic 属性和方法。任何声明为 private 的东西都不能使用。

2) 这是真的。只要加载了类(这与之前的自动加载问题相得益彰),您就可以通过范围解析运算符 (::) 访问静态方法,如下所示:ClassName::methodName();

3) public 的意思是正确的,但是正如我之前提到的,private 方法只能由它们声明的类使用。

class parentClass
{
     private $x;
     public $y;
}

class childClass extends parentClass
{    
    public function __construct() {
        echo $this->x;
    }
}

$z = new childClass();

上面的代码将导致触发一个注意错误,因为 $x 不能被 childClass 访问。

Notice: Undefined property: childClass::$x

如果 $x 被声明为 protected,那么 childClass 将具有访问权限。编辑:声明为 protected 的属性可由声明它的类和任何扩展它的子类访问,但不能访问“外部世界”。它是 publicprivate 之间的一个很好的中间体。

关于php - 关于 PHP 中的 OO 和类的几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1408848/

相关文章:

javascript - 如何在类中的html中添加带有函数回调的事件监听器?

javascript - 如何在构造函数中设置javascript私有(private)变量?

c# - C# 中具有抽象子类的基类?

PHP Facebook 图形 API

php - 如何在显示数据库中的动态数据时修复布局

vb.net - 无法从代码隐藏访问我的类(class)。类是App_Code文件夹

c++ - 在父对象上调用成员函数?

java - 自动刷新jcombobox

php - WooCommerce 如果条件(如果产品在购物车中执行某些操作)

php - 阻止 IE 7/IE 8 兼容模式用户?