public(公有):公有类可以在任何地方被访问;
protected(受保护):受保护的类成员则可以被其自身及其子类和父类访问;
private(私有):只能被自身的类访问。
1、类常量const :类中始终保持不变的值定义为常量,且定义和使用常量的时候不需要使用 $ 符号
注意:常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。
2、自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如self,parent或static)。
3、范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问 静态 成员,类常量,还可以用于覆盖类中的属性和方法。
self,parent和static这三个特殊的关键字是用于在类定义的内部对其属性或方法进行访问的。
4、PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
abstract class AbstractClass
{
// 强制要求子类定义这些方法
abstract protected functiongetValue();
abstract protected functionprefixValue($prefix);
// 普通方法(非抽象方法)
public functionprintOut() {
print$this->getValue() ."\n";
}
}
classConcreteClass1extendsAbstractClass
{
protected functiongetValue() {
return"ConcreteClass1";
}
public functionprefixValue($prefix) {
return"{$prefix}ConcreteClass1";
}
}
class ConcreteClass2 extends AbstractClass
{
public functiongetValue() {
return"ConcreteClass2";
}
public functionprefixValue($prefix) {
return"{$prefix}ConcreteClass2";
}
}
$class1= newConcreteClass1;
$class1->printOut();
echo$class1->prefixValue('FOO_') ."\n";
$class2= newConcreteClass2;
$class2->printOut();
echo$class2->prefixValue('FOO_') ."\n";
?>
////答案
ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2
5、使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
接口是通过interface关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是公有,这是接口的特性。
要实现一个接口,使用implements操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。