摘要:由于静态方法不需要通过对象即可调用,所以伪变量在静态方法中不可用。继承一个抽象类的时候,子类必须定义父类中的所有抽象方法另外,这些方法的访问控制必须和父类中一样。
extends对象继承
PHP中类不允许同时继承多个父类,也就是extends后面只能跟一个父类名称,这个特性被称为PHP的单继承特性
当扩展一个类,子类就会继承父类所有公有的和受保护的方法。除非子类覆盖了父类的方法,被继承的方法都会保留其原有功能。
printItem("baz"); // Output: "Foo: baz" $foo->printPHP(); // Output: "PHP is great" $bar->printItem("baz"); // Output: "Bar: baz" $bar->printPHP(); // Output: "PHP is great" ?>访问控制(可见性)
对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。
面向对象的三种访问权限:
——public共有的类成员,可以再任何地方被访问到
- 定义该成员的类(自身),该类的子类,其他类
——protected受保护的类成员,可以被其自身和子类访问
——private私有的类成员,只有自身可以访问,子类和其他类都无法访问
class NbaPlayer { // 类的属性的定义 public $team="Bull"; public $playerNumber="23"; private $age="40"; // private 类型的属性不能被对象外部访问,但是可以在对象内部使用 $jordan = new NbaPlayer("Jordan", "198cm", "98kg", "Bull", "23"); // 访问对象的属性使用的语法是->符号,后面跟着属性的名称 echo $jordan->age." ";//Fatal error: Cannot access private propertyStatic(静态)关键字
声明类属性或方法为静态,就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
静态属性不可以由对象通过 -> 操作符来访问。
age . " "; // 不能在静态方法中使用this伪变量,也不能用对象的->方式调用静态成员 } } // 类名加“::”可以访问类的静态成员 // 静态成员不需要实例化就可以访问 echo "The president is ". NbaPlayer::$president. " ";//The president is David Stern NbaPlayer::changePresident("Adam Silver"); echo "The president is changed to ". NbaPlayer::$president. " ";//The president is changed to Adam Silver ?>Final 关键字
如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。
属性不能被定义为 final,只有类和方法才能被定义为 final。
test(); ?>对象接口
接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是公有,这是接口的特性。
实现(implements)要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
实现多个接口时,接口中的方法不能有重名。
eat("Apple"); $monkey = new Animal(); $monkey->eat("Banana") ?>抽象类
定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样。
抽象类前面以abstract关键字开始
eat("Apple"); $man->breath(); // 和Animal共用了抽象类ICanEat的breath方法 $monkey = new Animal(); $monkey->eat("Banana"); $monkey->breath(); ?>
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/20848.html
摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...
摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...
摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...
阅读 1878·2021-11-12 10:36
阅读 2313·2021-09-01 10:29
阅读 2339·2019-08-30 15:56
阅读 1017·2019-08-30 12:56
阅读 2345·2019-08-26 13:58
阅读 2265·2019-08-23 18:38
阅读 1487·2019-08-23 18:32
阅读 2105·2019-08-23 16:53