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,假设您有一个抽象类: abstract class PersonAbstract { private $name = "Stack Overflow"; } 在抽象类中将属性声明为private合法吗?或者这个类应该扩展,最小可见性是受保护的?是的,您可以在抽象类中有一个私有字段。但是,该字段只能由该抽象类中的函数访问。从抽象类继承的任何类都将无法访问该字段 在抽象类中,可以将字段和函数声明为public、protected或private。如果某个字段或函数是公共的,则任何人都可以访

假设您有一个抽象类:

abstract class PersonAbstract
{
    private $name = "Stack Overflow";
}

在抽象类中将属性声明为private合法吗?或者这个类应该扩展,最小可见性是受保护的?

是的,您可以在抽象类中有一个私有字段。但是,该字段只能由该抽象类中的函数访问。从抽象类继承的任何类都将无法访问该字段

在抽象类中,可以将字段和函数声明为public、protected或private。如果某个字段或函数是公共的,则任何人都可以访问它。如果它受到保护,则只有该类以及从该类继承的任何类才能访问它。如果它是私有的,则只能由该类访问


抽象函数必须由继承类实现,因此使用私有抽象函数是没有意义的(也可能不起作用)。

我不使用PHP,但我认为只要PersonAbstract中至少有一个使用该变量的方法,它就可能是合法和有意义的。是的,它是合法的。尽管该类是
抽象的
,但从该类派生的类仍然可以调用其
受保护的/公共的
方法,这些方法确实可以访问
私有的
变量。@因为您可以声明私有属性,但不能在扩展类中访问它。您可以在抽象类中创建私有属性,但不是功能。检查:
函数实现必须定义为受保护的或公共的,但不是私有的
@Anas函数也可以是私有的。您已经从上下文中引用了一个引号-重写
方法必须以相同(或限制较少)的可见性定义。例如,如果抽象方法定义为protected,则函数实现必须定义为protected或public,而不是private
。但是,私有抽象函数是不可能的,这可能就是您的意思。谢谢您的澄清。