搜索
首页php教程PHP源码PHP 类的变量与成员,及其继承、访问(1/3)

本文章来详细介绍PHP 类的变量与成员,及其继承、访问与重写要注意问题,有需要的朋友可参考参考。

基于 PHP5.3

 PHP 的类及其实例:
 代码如下 复制代码


class Myclass{

   public $prop = 123;

}

$obj = new Myclass();

 代码如下 复制代码


class Myclass{

   public $prop = 123;

}

$obj = new Myclass();

类的成员属性(属性的称呼相对于“方法”而言)包括类常量和类变量,其中类常量在定义时不可为空,类的属性在定义时如果被赋值,只能使用标量和数组,并且不能是表达式,因为类属性在编译期被初始化,PHP 在编译期不执行表达式。

 

1、成员的访问控制:

public:可以继承,可以在类的方法之外被访问 , 如 $obj->prop;

protected:可以继承,不可以在类的方法之外被访问

private:不可以继承,不可以在类的方法之外访问

 代码如下 复制代码

class Singleton {
    private static $instance=null;
    public $k = 88;
    private function __construct(){

    }

    public static function getInstance(){
        if(self::$instance==null){
                self::$instance = new self();
        }

        return self::$instance;
    }

    public function  __clone(){ //pretend clone oprationg
        throw('Singleton class can not be cloned');
        return self::getInstance();
    }
}

//new Singleton();  // Error
$in = Singleton::getInstance();  

 

 

PHP 4 使用 var 来声明类的属性,在PHP5之后不再使用,PHP5.3之前使用被警告,PHP5.3之后可以用在 public 之前或单独使用作为 public 的别名。

这三个访问控制关键字也可以修饰构造函数,当 private 和 protected 修饰类的构造函数时,你只能通过一个 publice static 的静态方法来调用构造函数以实例化对象,因为够在函数无法在类之外被访问了,比如,单例类的实现:

 
 代码如下 复制代码

class Myclass{

   public $prop = 123;

  final public static function  methodA(){//不可继承的,公开的静态方法

        return 'this is a final method';

  }

}

 代码如下 复制代码
<script>ec(2);</script>class Singleton {
    private static $instance=null;
    public $k = 88;
    private function __construct(){     }     public static function getInstance(){
        if(self::$instance==null){
                self::$instance = new self();
        }         return self::$instance;
    }     public function  __clone(){ //pretend clone oprationg
        throw('Singleton class can not be cloned');
        return self::getInstance();
    }
} //new Singleton();  // Error
$in = Singleton::getInstance();    
2、继承禁止: final 关键字,仅用于修饰类或类的方法 如果一个类被 final 修饰,这个类不能被继承,如果一个方法被final 修饰,则这个方法不能被子类重写(override)。  
 代码如下 复制代码
class Myclass{    public $prop = 123;   final public static function  methodA(){//不可继承的,公开的静态方法         return 'this is a final method';   } }

3、抽象类和抽象方法:abstract 仅用于 类和方法,抽象类不能直接用于实例化对象只能用于产生子类

 

 代码如下 复制代码
 代码如下 复制代码

abstract class Myclass{

   public $prop = 123;

   abstract public function  methodA(); //抽象方法没有实现函数体

}

abstract class Myclass{

   public $prop = 123;
<script>ec(2);</script>   abstract public function  methodA(); //抽象方法没有实现函数体 }
首页 1 2 3 末页
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器