类修饰符
- 1.abstract修饰的类为抽象类,如果一个类中含有抽象方法那么这个类就是抽象类(当然一个类中没有抽象方法,我们也可以定义这个类为抽象类),那么什么是抽象方法呢,抽象方法就是没有方法体的方法(没有大括号和里面的内容),抽象方法前面也加上abstract修饰。抽象类本身不能被实例化,只有一个类继承了它,并覆盖了它所有的抽象方法,这样我们可以实例化它的子类
abstract class My{
abstract function say();
}
//
abstract class My{
function say(){
echo 'hello';
}
}
- 2.interface修饰的类为接口,接口与抽象类有点类似,不过他们的区别是,接口所有的方法都是抽象方法,接口的抽象方法前面没有abstract修饰,成员属性必须为常量。接口引用区别于类继承关键字 extends ,继承只能只是单一性,而接口可以使用关键字 implements 多个引用并用逗号分开。
interface demo {
const NAME = "常量对象属性";
function fun1();
function fun2(); //抽象方法。
}
class MyPc extends Root implements demo , demo2 , demo3 {
...
}
- 3.final修饰的类为终结类,它不能被继承。
访问修饰符
- 1.public 公共的方法和属性,能在所有的类中使用
- 2.static 静态的方法和变量
如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用,static的属性,在内存中只有一份,为所有的实例共用, 静态方法不能调用非静态属性 。不能使用self::调用非静态属性。
function test(){
static $a=1;
$a*=2;
echo $a."\n";
}
test()
test()
test()
//打印结果
//2
//4
//8
静态变量的初始化赋值只有一次,后面的test方法不会再初始化。
- 3.private 修饰的方法和变量是私有的,只能在本类中调用(在其他的类中实例化本类,是无法调用private修饰的方法和变量)
- 4.proteced 受保护的方法和变量,只能在本类和本类的子类中使用
- 5.final 修饰的方法不能被覆盖。