PHP面向对象 1.6 常见的关键字
来源:互联网 发布:内容管理系统cms 开源 编辑:程序博客网 时间:2024/05/01 12:09
1. final关键字
PHP5新增,可以加载类或类中方法前,但是不能使用final标识成员属性
使用final标识的成员方法,在子类中不能被覆盖
<?php final class Myclass{//使用final关键字标识,使其不能有子类 //成员略 } class Myclass2 extends MyClass{//试图继承final标识的类会出错 //成员略 }
如果在子类中的成员方法前加上final则子类中不能被覆盖
2. static关键字
使用static可以将类中的成员属性或方法标识成静态的
以Person为例,如果在Person 类中有一个
$country='china'
的成员属性,任何一个Person类的对象都会拥有自己的一份$country
属性.对象之间不会干扰。而static成员是作为整个类的属性存在。如果将$country
属性使用static关键字标识,则不管通过Person类创建多少个对象,甚至可以是没有对象,这个static成员总是唯一存在的。在多个对象之间共享的。不需要对象而是直接使用类名访问.类名::静态成员属性名;类名::静态成员方法名静态成员属于类,不属于任何对象,所以在类中不能用$this来引用它,使用self::静态成员属性名;self::静态成员方法名();
如果在类外,可以使用对象引用和使用类名访问,但是通常选择类名来访问。
<?php//声明一个Myclass类class Myclass{ static $count; //设置静态成员属性count用来统计对象创建的次数 function __construct(){ //每次创建一个对象就会自动调用一次这个构造方法 self::$count++; } static function getCount(){ //声明一个静态方法,在类外直接使用类名就可以调用 return self::$count; }}Myclass::$count = 0; //在类外面使用类名访问类中的静态成员,为其初始化赋值0$myc1 = new Myclass(); //通过myclass类创建一个对象,在构造方法中count累加1$myc2 = new Myclass(); //第二个$myc3 = new Myclass(); //第三个echo Myclass::getCount(); //在类外面使用类名访问类中的静态成员方法,获取静态属性值3echo $myc3->getCount(); //通过对象引用也可以访问静态方法
注意
在静态方法中只能访问静态成员。因为非静态的成员必须通过对象的引用才能访问。通常是使用
$this
完成的。而静态的方法在对象不存在的情况下也可以直接使用类名来访问。没有对象也就没有$this
引用,没有了$this引用就不能访问类中的非静态成员,但是可以使用类名或self在非静态方法中访问静态成员。
3. 单态设计模式
单态设计模式的主要作用是保证在面向对象编程设计中,一个类只能有一个实例对象存在。因为PHP是脚本语言,每次访问都是一次独立的过程,而在这个过程中一个类有一个实例对象就足够了。例如数据库操作类。不用为每个SQL语句实例一个对象,因为实例化一次就要链接数据库会非常低效。另外使用单态模式可以节省内存,因为他限制了实例对象的个数。
<?php//声明一个类Db,用于演示单态模式的使用class DB{ private static $obj = null; //声明一个私有的静态的成员属性//构造方法,使用private封装后则只能在累的内部使用new去创建对象 private function __construct() { //在这个方法中去完成一些数据库操作 echo "链接数据库操作"; }//静态方法,只有通过这个方法才能返回本类的对象,用类名调用 static function getInstance() { if (is_null(self::$obj)) self::$obj = new self(); //如果本类中的$obj为空,说明还没有实例化过,可以进行实例化 return self::$obj; }//执行SQL语句完成对数据库的操作 function query($sql) { echo $sql; }}//只能使用静态方法getInstance()去获取DB类的对象$db = DB::getInstance();$db->query('SELECT * FROM db');
4. const关键字
虽然const和static的功能不同,但是使用的方法比较类似。PHP中定义常量是通过调用define()函数来完成的,但要将成员属性设置成常量,则需要使用const关键字。访问方式和静态成员一样,都是通过类名或在成员方法中使用self关键字访问,也不能用对象来访问。常量不能重新赋值。
<?php//声明一个Myclass类,在类中声明一个常量和一个成员方法class MyClass{ const CONSTANT = 'CONSTANT VALUE'; //使用const声明一个常量并直接赋上初值; function showConstant() { //声明成员方法并在其内部访问本类中的常量 echo self::CONSTANT . "<br/>"; //使用self访问常量,注意常量前不要加"$" }}echo MyClass::CONSTANT . "<br/>";$class = new MyClass();$class->showConstant();
5. clone
用来创建一个对象的副本,克隆后副本与原本完全独立,互不干扰
<?php//声明一个Myclass类,在类中声明一个常量和一个成员方法class MyClass{ const CONSTANT = 'CONSTANT VALUE'; //使用const声明一个常量并直接赋上初值; function showConstant() { //声明成员方法并在其内部访问本类中的常量 echo self::CONSTANT . "<br/>"; //使用self访问常量,注意常量前不要加"$" }}$class = new MyClass();$class2 = clone $class; //创建一个副本class2$class->showConstant();$class->showConstant();
- PHP面向对象 1.6 常见的关键字
- PHP面向对象中常见的关键字
- PHP面向对象中常见的关键字
- php面向对象的static关键字
- PHP面向对象:static关键字的使用
- php 面向对象 this 关键字
- php面向对象static关键字
- PHP面向对象:const关键字
- php面向对象中static 关键字的使用
- php面向对象之final static const关键字的使用
- php面向对象-关键字的合理运用,public,private,
- PHP 面向对象中常见关键字使用(final、static、const和instanceof)
- PHP面向对象 1.7 常见的魔术方法及应用
- php面向对象基本概念(Final关键字)
- PHP面向对象——clone关键字
- PHP面向对象——clone关键字
- 面向对象的PHP
- php的面向对象
- LibGDX_6.4: 常用系统控件: 复选框(CheckBox)
- C语言常见错误
- 推荐!手把手教你使用Git
- eclipse debug不了 Cannot connect to VM
- Hadoop WordCount代码
- PHP面向对象 1.6 常见的关键字
- 聚类分析:基本概念梳理
- android初学笔记,TextView及其派生组件的基本用法
- LibGDX_6.5: 常用系统控件: 文本框(TextField)
- 57,字符串的基本知识
- Linux c 算法与数据结构--栈
- 【Python】Python 三种导入模块的方法和区别
- android四大组件--ContentProvider详解
- 第十四周项目二 二叉树排序树中查找的路径