您好,登录后才能下订单哦!
封装,继承,多态是面向对象的三大特性,本文总结一下 php 是如何实现这三大特性的
class className{ public $attribute1 //成员属性 //成员方法 function fun1(){ echo "method1" } }
abstract class className1{ //抽象方法 abstract public function fun1(); abstract private function fun2(); abstract protected function fun3(); }
抽象类至少有一个抽象方法
抽象类不能被实例化,只能被继承 extends
继承的派生类要把所有方法重载才能实例化对象
可以看做是一种成员属性全部为抽象的抽象类,用作定义规范(面向接口编程)
interface IName { const NAME; function fun1(); }
接口中方法 必须全为 抽象方法
接口中成员方法和属性为 public
接口成员属性必须为常量
接口不能被实例化,只能被引用 implement
被引用后,派生类不许把所有方法重载才能实例化对象
实例化对象,使用 -> 访问对象内容 (成员属性和成员方法)
$instance1 = new className; //实例化对象 $instance1->attribute1; //访问成员属性 $instance1->method1(); //访问成员方法
作用域 | public | protected | private |
---|---|---|---|
全局 | Yes | No | No |
继承类 | Yes | Yes | No |
本类 | Yes | Yes | Yes |
类的成员方法前如不加封装关键字,默认为public,不过最好加上关键字,便于阅读
访问当前 对象 中的成员属性和成员方法
在不实例化的情况下访问当前 类 的成员属性和成员方法, 作用域在定义类时确定。该关键字常与 static, const 搭配使用,用于访问静态成员和常量
在不实例化的情况下访问当前 类 的成员属性或成员方法。常用于在派生类中访问基类成员
php 只能单一继承
class B extends A{ ...... }
用于引用接口,不同于继承的单一性,一个类可以引用多个接口
class A implements demo1, demo2, demo3{ ...... }
先继承后引用,单继承多引用
class A extends B implements demo1, demo2, demo3{ ...... }
final class className1{ final func1(){ ...... } }
加了 final 关键字的类不能被继承
基类中加了 final 关键字的成员方法不能在派生类中被重载
加了 static 关键字的成员方法和成员属性不具备多态性,用于在不实例化的情况下访问。静态属性单独占用内存,不会在对象实例化时被反复创建。
class className1{ static $atrr1; static func1(){ ...... } }
用于在类中定义常量,类似用于在外部定义常量的PHP关键字 define(); const 只能修饰类中的成员属性
class className1{ const NAME; }
常量一般用大写字母命名,且常量不使用 $ 符号
用于判断对象实例类型
$obj = new A(); if ($obj instanceof A) { echo 'A'; }
摘自php手册
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。