zoukankan      html  css  js  c++  java
  • 【php】面向对象(一)

    1. 学习面向对象的目标:
      a) 语法的学习:
      b) 编程思想的学习:
        i. 过程化:
        ii. 面向对象:
    2. 比较(有对象和没对象的区别)
      a) 没对象:
        i. 我饿了 自己做饭
        ii. 我渴了 自己烧水
        iii. 衣服脏了 自己去洗衣服
        iv. 空虚寂寞了 自己去玩LOL
      b) 有对象
        i. 我饿了 对象给我去做饭
        ii. 我渴了 对象给我去烧水
        iii. 我衣服脏了 对象给我去洗衣服
        iv. 我空虚寂寞了 对象和我一块玩LOL游戏
      c) 面向对象的核心,就是让对象帮我们去实现指定的功能
    3. 对象:具有一定功能和特征的单个事物,称之为对象
      a) 对象是实际存在的一个事物
    4. 类:具有相同功能和特征的对象的抽象,称之为类
    5. 类和对象的关系:
      a) 类的实体化(实例化)就是一个对象
      b) 对象的抽象就是类
    6. 类比:
      a) 马良 马良画的画 从画中走出来的人
      b) 程序员 类 对象
      c) 设计师 设计的图纸 由设计稿建造出来的建筑
    7. 如何来声明一个类:(相当于正在设计图纸)
      a) 格式:class 类名{}
      b) 命名:首字母大写的驼峰命名法进行命名
      c) 标识符命名规则:字母、数字、下划线,首字母不能为数字,严格区分大小写,且不能使用关键字
      d) 声明成员属性:
        i. 注意:
          1. 必须给定成员修饰符(Public、Protected、Private)
          2. 成员属性的默认值(初始值)可以不给
          3. 成员属性赋初始值时
            a) 不能使用变量赋值
            b) 建议不要使用计算来给成员属性赋值
            c) 不能使用函数调用方式给成员属性赋值
          4. 变量的数据类型:
            a) 四种标量:整型、浮点型、字符串型、布尔型
            b) 两种复合:对象、数组
            c) 两种特殊:资源、null空
          5. 常量可以存放的数据类型:
            a) 4中标量类型和null空型
      e) 成员方法的声明:
        i. 注意
          1. 成员方法就是一个函数,在类当中我们称之为方法
          2. 跟成员属性的声明方式类似,成员方法,也需要给定一个成员修饰符(public、protected、private)
          3. 成员方法的参数是可有可无的
          4. 成员方法的返回值和代码体都是可有可无的!
          5. 函数在我们不指定return的时候,或者说,给定return但是后面没有值的情况下,返回的结果都是null
      f) 类当中只能存在成员属性和成员方法,之外的内容都会报错!
      g) 成员属性和成员方法的位置不固定,但是建议将成员属性写在前面
    8. 对象的实例化:
      a) 格式:变量名 =new 类名()

       Object => 变量的类型
       (Meinv) => 类名
        [1] => 在当前脚本当中所实例化对象的索引号

     1 //声明一个美女类(相当于设计的过程)
     2 class Meinv{
     3     
     4     //特征 => 成员属性
     5     public $name;
     6     public $sex;
     7     public $age=18;
     8     public $tall;
     9     
    10     //功能 => 成员方法
    11     public function eat(){
    12         echo '我正在吃东西!';
    13     }
    14     
    15     public function drink(){
    16         echo '我正在喝东西';
    17     }
    18     
    19     public function talk($someone){
    20         echo '我正在和'.$someone.'说话!';
    21     }
    22 }
    23 
    24 //实例化(实体化)
    25 $lingling = new Meinv();
    26 
    27 //成员属性的操作
    28 $lingling->name = '玲玲';
    29 $lingling->sex = '女';
    30 $lingling->age = 20;
    31 $lingling->tall = 160.00;
    32 
    33 var_dump($lingling);
    34 
    35 //结果
    36 object(Meinv)[1]
    37   public 'name' => string '玲玲' (length=6)
    38   public 'sex' => string '女' (length=3)
    39   public 'age' => int 20
    40   public 'tall' => float 160

      b) 注意:
        i. 类名后面的小括号可有可无,但是我们建议加上
        ii. 对象的实例化可以在类的声明之前,也可以在类的声明之后
        iii. 成员访问符: ->

     1 //声明一个手机类
     2 
     3 class Phone{
     4     
     5     //成员属性
     6     public $brand;
     7     public $size;
     8     public $color;
     9     
    10     //成员方法
    11     public function call($someone){
    12         echo '我正在给'.$someone.'打电话<br/>';
    13     }
    14     
    15     public function sendMessage($someone){
    16         echo '我正在给'.$someone.'发短信<br/>';
    17     }
    18     
    19 }
    20 
    21 //实例化类
    22 $apple = new Phone();
    23 
    24 //初始化成员属性信息
    25 $apple->brand = '苹果';
    26 $apple->size = '4.7inch';
    27 $apple->color = '红色';
    28 
    29 //进行成员属性的操作
    30     //成员属性的添加
    31     $apple->price = '5799元';
    32     //成员属性的删除
    33     // unset($apple->color);
    34     //成员属性的修改
    35     $apple->size = '5.5inch';
    36     //成员属性的访问
    37     echo $apple->brand;        //苹果
    38     echo $apple->size;        //5.5inch
    39     echo $apple->price;        //5799元
    40     
    41 //进行成员方法的操作
    42 $apple->call('范冰冰');        //我正在给范冰冰打电话
    43 $apple->sendMessage('李冰冰');        //我正在给李冰冰发短信

    9. $this 特殊的变量
      a) 名字特殊
      b) 只能在类的内部当中的成员方法中使用
      c) $this 代表了正在访问当前方法的对象
    10. 构造方法:
      a) 本质:也是一个成员方法,是一个特殊的成员方法
      b) 名字:__construct、和类名同名的方法都属于构造方法,我们推荐使用__construct;
      c) 执行场景:当我们实例化一个类时,会自动调用__construct方法
      d) 作用:初始化对象
    11. 析构方法:
      a) 本质:也是一个成员方法,是一个特殊的成员方法
      b) 名字:__destruct
      c) 执行场景:当我们对象被销毁的时候,自动执行

     1 //声明一个汽车类
     2 class car{
     3     
     4     //成员属性
     5     public $brand;
     6     public $type;
     7     public $price;
     8     
     9     //成员方法
    10     public function __construct($brand,$type,$price){
    11         //给成员属性赋值
    12         $this->brand = $brand;
    13         $this->type = $type;
    14         $this->price = $price;
    15         
    16         echo $this->brand.'创建<br/>';
    17     }
    18     
    19     public function drive(){
    20         echo '我正在开车,么么哒!!';
    21     }
    22     
    23     public function carry($someone){
    24         echo '我正在载着'.$someone.'找女朋友!';
    25     }
    26     
    27     //析构方法,当我们的脚本执行完毕时会自动执行
    28     public function __destruct(){
    29         echo $this->brand.'销毁<br/>';
    30     }
    31     
    32 }
    33 
    34 //实例化一个奔驰车
    35 $benz = new car('奔驰','越野','200w');
    36 
    37 $baoma = new car('宝马','敞篷','180w');
    38 
    39 //结果
    40 奔驰创建
    41 宝马创建
    42 宝马销毁
    43 奔驰销毁
    
    
  • 相关阅读:
    牛客寒假5-D.炫酷路途
    牛客寒假5-A.炫酷双截棍
    HDU-1024
    牛客寒假6-J.迷宫
    牛客寒假6-G.区间或和
    牛客寒假6-E.海啸
    【BZOJ3456】—城市规划(生成函数+多项式求逆)
    【BZOJ3456】—城市规划(生成函数+多项式求逆)
    【TopCoder SRM548 Div1】—KingdomAndCities(组合数学)
    【TopCoder SRM548 Div1】—KingdomAndCities(组合数学)
  • 原文地址:https://www.cnblogs.com/peilanluo/p/6819041.html
Copyright © 2011-2022 走看看