继承:
关键字:extends,使一个类继承并拥有另一个已经存在类的成员属性和方法,被继承的类称为父类或基类,继承类为子类;
public: 方法或者属性在任何作用域下都可以访问到,而且是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public。
protected:本类和子类可以访问,外部对象不可以调用。private: 只能在本类访问,子类与外部对象都不可能调用。经过private标记的方法或者属性可以在继承类中重新定义,每一个类只能看到它自己定义 的私有方法。name=$name; } function work(){ echo "{ $this->name}我在工作"; } function __destruct(){ //析构函数 } } class son extends father{ //继承父类 function play(){ echo "{ $this->name}我在玩游戏"; } } $my_father=new father("爸爸"); //创建父类对象 $my_father->work(); $my_son=new son("儿子"); $my_son->work(); $my_son->play(); ?>
PHP类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此PHP引入了接口技术;
一个类可以继承多个接口;一个类只能继承一个抽象类;
接口interface/implements:
接口定义:如果一个抽象类里面的所有方法都是抽象方法,且没有声明变量,而且接口里面所有的成员都是public权限的,那么这种特殊的抽象类就叫接口;
接口使用interface关键字定义,并使用implements来实现接口的方法,且必须完全实现;
实现一个接口:
name; } function setName($_name) { $this->name = $_name; }}$apple = new Apple(); //创建对象$apple->setName("苹果");echo "创建了一个" . $apple->getName();echo "";echo "MAX_GRADE is " . Apple::MAX_WEIGHT; //静态常量?>
实现多个接口:
抽象类和接口的区别接口是一个特殊的抽象类,也可以看作是一个模型的规范。接口与抽象类大致区别如下:
一个子类如果implements一个接口,就必须实现接口中的所有方法(不管是否需要);如果继承一个抽象类,只需要实现需要的方法即可;
如果一个接口中定义的方法名改变了,那么所有实现此接口的子类需要同步更新方法名;而抽象类中如果方法名改变了,其子类对应的方法名将不受影响, 只是变成了一个新的方法而已; 抽象类只能单继承,当一个子类需要实现的功能需要继承多个父类时,就必须使用接口;