Blogger Information
Blog 70
fans 4
comment 5
visits 104925
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP:OOP基础/类(对象抽象化的结果)与对象 (类实例化结果)/构造方法/对象成员之间的内部访问/类的自动加载/静态成员的访问 类的引用/类的继承 扩展 父类方法
JiaJieChen
Original
999 people have browsed it

OOP基础/类(对象抽象化的结果)与对象 (类实例化结果)/构造方法/对象成员之间的内部访问/类的自动加载/静态成员的访问 类的引用/类的继承 扩展 父类方法

一. 类(对象抽象化的结果)与对象 (类实例化结果)

属性含义
class类声明
new类实例化
public公开成员,随处可见
protected受保护成员,仅在当前类或子类中可见
private私有成员, 仅在当前类可见
spl_autoload_register()自动加载器
extends类的扩展
static声明类的静态成员
$this实例引用
self类的引用
trait类功能横向扩展
__construct构造器 1.对对象的公共属性进行初始化赋值 2. 记录当前类被实例化的次数

对象

类的概念

物以类聚,把具有相似特性的对象对垒到一个类中,类定义了这些相似对象拥有的相同的属性和方法
类是相似对象的描述,成为类的定义,是该类对象的蓝图或者原型
类的对象称为一个类的实例(Instance)
类的属性和方法统称为类成员

类的实例化

类的实例化:通过类定义创建一个类的对象
类的定义属性值都是空或默认值,而对象的属性都有具体的值

类的定义

类的定义以关键字class开始,后面跟着这个类的名称。类的命名通常每个单词的第一个字母大写,以中括号开始和结束
类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对圆括号
对象中得成员属性和方法可以通过->符号来访问


①类的声明/类的实例化结果

public 公开成员,实例对象  用 new 关键字 + 类名称,在创建好实例对象后,可以用用->访问里面的公共成员或者方法

<?php//运动类class moveMent{    //public 公开成员    public $name;   //姓名    public $height; //身高    public $weight; //体重    public $age;    //性别    public $gender; //年龄}//实例对象  用 new 关键字 + 类名称$ZhanShuai = new moveMent;//在创建好实例对象后,可以用用->访问里面的公共成员或者方法$ZhanShuai -> name = "张帅";$ZhanShuai -> height = "170cm";$ZhanShuai -> weight = "55kg";$ZhanShuai -> age = "男";$ZhanShuai -> gender = "23";echo  "姓名:" .$ZhanShuai -> name ."<br>";;echo  "身高:" .$ZhanShuai -> height."<br>"; ;echo  "体重:".$ZhanShuai -> weight."<br>"; ;echo  "性别: " .$ZhanShuai -> age."<br>"; ;echo  "年龄: " .$ZhanShuai -> gender ."岁"."<br>";

二. 构造方法

  • __construct 构造器 1.对对象的公共属性进行初始化赋值 2. 记录当前类被实例化的次数

    有构造方法时, 类的实例化必须给构造方法传值,否则会报错

给构造方法传递参数,并且访问类里面成员实例方法

<?php//①类的声明/类的实例化结果//运动类class moveMent2{    //public 公开成员    public $name;   //姓名    //protected 受保护成员,仅限本类以及子类访问    protected $height; //身高    //private 私有成员,仅限本类中的使用.  如何给私有成员赋值 1. 通过构造函数 2. 通过魔术方法 __Set() to be continued....    private  $weight; //体重    public $age;    //性别    public $gender; //年龄    //__construct 构造器 1.对对象的公共属性进行初始化赋值 2. 记录当前类被实例化的次数     public function __construct($name,$height,$weight,$age,$gender)    {         //特殊的对象引用$this :代表本对象 , 完成对象内部成员的访问         //使用$this访问类成员初始化赋值         $this->name = $name;         $this->height = $height;         $this->weight = $weight;         $this->age = $age;         $this->gender = $gender;    }    //成员实例方法    public function movements(){        if ($this->height > 175 && $this->weight < 100) {            return "$this->name 适合成为运动员";        }else {            return "$this->name 不适合成为运动员";        }    }}//有构造方法时, 类的实例化必须给构造方法传值//实例对象  用 new 关键字 + 类名称// $zql = new moveMent2;$zql = new moveMent2("张起灵","180","60kg","男","23");$panzi = new movement2("胖子","170","80kg","男","23");//调用类方法echo $zql->movements() ."<br>";echo  $panzi->movements() ;

三.对象成员之间的内部访问 $this

  • 特殊的对象引用$this :代表本对象 , 完成对象内部成员的访问,类似指针

//__construct 构造器 1.对对象的公共属性进行初始化赋值 2. 记录当前类被实例化的次数     public function __construct($name,$height,$weight,$age,$gender)    {         //特殊的对象引用$this :代表本对象 , 完成对象内部成员的访问         //使用$this访问类成员初始化赋值         $this->name = $name;         $this->height = $height;         $this->weight = $weight;         $this->age = $age;         $this->gender = $gender;    }    //成员实例方法    public function movements(){        if ($this->height > 175 && $this->weight < 100) {            return "$this->name 适合成为运动员";        }else {            return "$this->name 不适合成为运动员";        }    }

四.private仅限本类中使用 protected本类中,子类中使用

  • protected本类中,子类中使用

    访问受保护的成员会进行报错,protected只能在本类中,子类中使用 Fatal error: Uncaught Error: Cannot access protected property moveMent3::$height in

  • private仅限本类中使用

    访问私有成员private也会进行报错,因为私有成员仅限于本类中使用
    Fatal error: Uncaught Error: Cannot access private property moveMent3::$weight in

  • 如何给私有成员赋值 1. 通过构造函数 2. 通过魔术方法 __Set() to be continued….

//__construct 构造器     public function __construct($height,$weightr)    {         //特殊的对象引用$this :代表本对象 , 完成对象内部成员的访问         //使用$this访问类成员初始化赋值         $this->height = $height;         $this->weight = $weight;    }   //成员实例方法    public function  Show(){        echo "我的体重是:$this->weight"."<br>";        echo "我的身高是:$this->height"."<br>";    }    $getName = new moveMent3("靓仔","175","55Kg","男","21");    echo $getName->Show();

五.类的自动加载 spl_autoload_register /静态成员的访问

①类的自动加载 spl_autoload_register

<?php//类的自动加载器spl_autoload_register(function($class){    require $class . ".php";});<?php//spl_autoload_register 注册类的自动加载器//引入类的自动加载器require "1-splauto.php";//建立对象 类的实例化$getName = new moveMent3("小龙女","165cm","45kg","女","21岁");//调用 类成员方法echo $getName->Show();

②静态成员的访问

  • static 关键字:标志静态成员(方法,属性), 静态成员只能由类来调用, 为所有对象共享

  • self:: 静态成员与类的实例无关  不能用$this来访问  用self:: 类的引用 访问 静态成员

<?php/** * 类的静态成员 * static 关键字:标志静态成员(方法,属性), 静态成员只能由类来调用, 为所有对象共享 */class mStatic{    //static 静态成员    public static $name;    public static $wage;    public function __construct($name,$wage){        //静态成员与类的实例无关  不能用$this来访问  用self:: 类的引用 访问 静态成员           self::$name = $name;        self::$wage = $wage;    }}//创建对象 类的实例化$user  = new mStatic("张三",12000);//访问静态成员 echo $user::$name." "." ";echo "工资:". $user::$wage;

七.类的继承 扩展 父类方法(魔术方法,普通方法)的重写 parent:: 调用父类成员

父类

<?php//物品类class mItems{    //衣服和价格都是公共成员    public $clothes;    public $price;    //构造器 给成员属性初始化    public function __construct($clothes,$price)    {        $this->clothes = $clothes;        $this->price = $price;    }    //公共成员方法    public function Show(){        return $this->clothes."是".$this->price."元";    }}

子类

<?php//继承物品父类class SumItems extends mItems{    //拓展属性 私有成员     private $num;    //重写父类魔术方法 构造器    public function __construct($clothes,$price,$num)    {        //parent关键字 调用父类的成员方法        parent::__construct($clothes,$price);        //初始化子类拓展成员属性        $this->num = $num;    }    //重写父类普通方法    public function Show()    {        return parent::Show().",库存还有:".$this->num."<br>";    }    //拓展普通方法    public function Sum()    {        return "剩余库存金额一共:".($this->price * $this->num)."元"."<br>";    }}

服务端

//引入文件require "1-splauto.php";//LiLing 实例化子类$LiLing = new SumItems("lining男衣",198,2000);//调用对象LiLing 子类方法 echo $LiLing->Show();echo $LiLing->Sum();

本单元小结
类(对象抽象化的结果)与对象 (类实例化结果)
构造方法 __construct()
对象成员之间的内部访问 $this
private仅限本类中使用  protected本类中,子类中使用
类的自动加载 spl_autoload_register(function())
静态成员的访问 类的引用self::
类的继承 extends 扩展 父类方法(魔术方法,普通方法)的重写 parent:: 调用父类成员
Correcting teacher:灭绝师太灭绝师太

Correction status:qualified

Teacher's comments:看来很喜欢盗墓笔记了, btw, 杨洋演技怎么样
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post