zoukankan      html  css  js  c++  java
  • php中class使用,对比java中的class

    1.都有构造函数constructor,php中多了一个析构函数

    php中constructor命名唯一 为__construct(参数列表),析构函数为__destruct()该方法没有参数。

    2.php中class也有继承,但是不支持重载,子类不会自动调用父类的构造函数,如果要调用可以使用parent关键字

    class Animal{
    
        public function __construct()
        {
            echo "Animal constructor";
        }
    }
    
    class Dog extends Animal{
    
        public function __construct()
        {
            echo "Dog constructor";
        }
    }
    
    new Dog(); //输出结果为"Dog constructor"

    class Monkey extends Animal{
    
        /**
         * Monkey constructor.
         */
        public function __construct()
        {
            parent::__construct();
            echo "Monkey constructor<br>";
        }
    }
    new Monkey(); //"Anima constructor";"Monkey constructor";

    还可调用非其父类的构造器,使用方法

    className::__construct();

    3.php类的成分:属性,方法,常量,静态成员

     属性必须为public、protected、private之一,如果修饰符为var等同于public

     为了方便对属性的读写操作,php5提供了__set(),__get()方法,只对private属性有效

    
    
    class Person
    {
    private $name;
    private $sex;
    private $age;

    public $org;

    private function __set($name, $value)
    {
    echo "调用set方法",$value,"<br>";
    $this->$name = $value;
    }

    private function __get($name)
    {
    return $this->$name;
    }
    }
    
    
    $p1 = new Person();
    //自动调佣__set方法
    $p1->name="张三";
    $p1->age=27;
    $p1->sex="";
    //public属性可以直接访问,不调用__set方法
    $p1->org="WTO";
    //自动调用__get方法
    echo $p1->name;
    echo $p1->sex;
    echo $p1->age;
    echo $p1->org;

    4.类的方法

    1,内部调用方式:$this->fanname();或者test::addab();

    2,实例化调用$e->addb();也可以用test::addab();

    5.类的常量

    类中的常量定义const

    class test{
    private $a;
    const PI = '3.14′;
    …..

    类中调用上面的常量方法如:"$this::PI",或者“类名::PI”

    实例化中,只能通过 类名::PI才可以调用常量。

    $e= new test();
    $e->PI =5; //注意,这里用 ->只是创造了一个也是名为PI的属性,而不是改变类中的PI常量的值。
    echo $e::PI; //这个才是调用类的常量。

    注意:常量只能用::来调用,不能改变其值。

    6.类的静态成员(静态属性或者静态方法)

    什么时候使用静态成员呢,需要创建所有类是实例共享的字段或者方法的时候,需要静态成员。

    静态成员的特征如下:

    6.1,静态成员,他让脚本上的所有该类的实例调用,但是不能借助类的特定实例调用,而是在类的外部,统一使用”类名::$成员“的方式调用

    类的内部则统一用”self::$成员“来调用。

    6.2,当新创建一次实例时,静态成员会从上次创建的实例最后值开始重新计算,而不是类中初始值开始计算。

    6.3,对于public定义的静态成员,可以在外部更改他的值,private则不可以改变其值。

    class test{
    public static $v = 0;
    function __construct(){ self::$v++; }
    static function getV(){ return self::$v; }
    }
    $a = new test();
    echo test::getV(); // 返回 1
    $b = new test();
    echo test::getV(); // 返回 2
    test::$v=8; //由于public定义的成员,改变静态成员的值。
    $c = new test();
    echo test::getV(); // 返回 9

  • 相关阅读:
    git clone代码总是失败
    sublime常用快捷键及插件
    canvas圆形倒计时
    box-show的用法
    全选、反选
    数据库,增删改查
    PHP操作MySQL
    输出六个随机字符串
    约瑟夫环的故事
    Unix编程艺术——摘录一
  • 原文地址:https://www.cnblogs.com/DolphWang/p/9272815.html
Copyright © 2011-2022 走看看