zoukankan      html  css  js  c++  java
  • 我们来聊聊面向对象吧(一).....

    前言:什么是面向对象,对于初学者其实就是个噩梦,但是其实面向对象,也不可怕,我个人理解是:变量把具有一定作用的数据存起来,以便后面使用,而函数则是将经常使用的功能封装起来以便后面使用,而面向对象的思想其实把拥有重复使用的变量和函数组装起来的一种思想,分隔成一小块块的代码,以便管理和日后的维护.

    (一)面向对象的三大特性(继承,封装,多态)

      继承:子类继承父类,子类也同时拥有了父类的功能

      封装:把有相同特性的代码断封装在一起

      多态:即重写父类的方法

    (二)什么是面向对象?

      在我初学面向对象的时候,我也觉得特别难,因为很多书,都拿诸如汽车是一个类,而我的奔驰则是一个对象这样例子来举例,刚开始也是很懵,究竟什么是面向对象?

      其实我的理解是这样的, 面向对象也是脱离不了面向过程的一种思维,举个栗子吧:比如我有一个需求,想吃早餐

      那么如果我用面向过程的话:我要做早餐(烧水->下面->放盐等等的操作,其中的每一个环节都是紧紧相扣的)

      如果我用面向对象就是在美团等等的外卖软件下单就好了,(而美团等的软件把做早餐的功能封装起来了,方便我们去用),这样的思想就是面向对象的思想

    (三)面向对象类成员介绍

      定义类的关键字: class 类名 {   类成员  } 

      要想使用类里面的成员则需要: 对象 = new 类名() ; 

                              类属性(相当于面向过程的变量)->分两种:普通类属性,静态类属性
    类成员分类(包括3类):        类方法(相当于面向过程的函数)->分两种:普通类方法,静态类方法
                    类常量(相当于面向过程的常量)->只有它自己一种

      1.如何定义类的成员(把成员放在类里面)

        静态成员属性:  public static $height=1.78;

        非静态成员属性:  public $name='zhangsan';

        -----------------------------------------------------------

        静态成员方法:  public static function(){ 逻辑方法 }

        非静态成员方法:   public function(){ 逻辑方法 }

        -------------------------------------------------------------

        类常量:  const AREA = '广东'

      2.如何调用类的成员

        静态的调用方法:  类名::静态成员 

        非静态:   对象->非静态成员

         类常量:  类名::类常量

        类的内部调用:

    内部调用非静态属性: $this->属性名
    
    内部调用静态属性: 类名::$属性名
    内部调用非静态方法: $this->方法名()
    内部调用静态方法
    : 类名::方法名()
    内部调用类常量:  类名::常量名

        类的外部调用:

    外部调用非静态属性: 对象->属性名
    
    外部调用静态属性: 类名::$属性名
    外部调用非静态方法: 对象->方法名()
    
    外部调用静态方法 : 类名::方法名()
    外部调用类常量:  类名::常量名

    (四)面向对象其他属性关系

      1.对象间的"=="与"==="的关系

        对象如果使用"=="等于比较,那么将只会比较对象中的数据内容,只要内容一致就是true,不会比较所处的空间是否相同;对象如果使用"==="全等于进行比较,那么不仅会比较对象中的数据内容,还要比较所处的空间是否是同一个对象空间,如果内容一致但是空间不一样,那么也将返回false。

      2.用self代表本类的类名

        用selt能够替换本类类名例如:Class:AREA === self::AREA

      3.构造方法

        public function __construct([形参列表]){#方法体 和 返回值}

        这个方法会在创建对象时候自动调用常用于初始化一些数据,php不负责定义只负责调用

      4.析构方法

        public function __destruct([形参列表]){#方法体 和 返回值}

        这个方法会在对象销毁时候自动调用常用于销毁数据,php不负责定义只负责调用

       5.对象引用传值和值传递的关系

        之所以对象的值传递和对象的引用传递效果是一样的,是因为无论是对象的值传递还是对象的引用传递,最终大家指向的都是同一个对象空间,所以无论改变哪一个,另外一个也都会受到影响。

     

       6.对象的克隆(生成一个全新对象的方法)

        新对象 = clone 对象

        __clone方法会在克隆一个新的对象时候创建

    IT这条路,当你懂得越多的时候,那么你不懂的也就会越多了.
  • 相关阅读:
    【BZOJ 3090】 树形DP
    【BZOJ 2323】 2323: [ZJOI2011]细胞 (DP+矩阵乘法+快速幂*)
    【BZOJ 1019】 1019: [SHOI2008]汉诺塔 (DP?)
    【BZOJ 3294】 3294: [Cqoi2011]放棋子 (DP+组合数学+容斥原理)
    【BZOJ 3566】 3566: [SHOI2014]概率充电器 (概率树形DP)
    【BZOJ 2121】 (字符串DP,区间DP)
    【BZOJ 4305】 4305: 数列的GCD (数论)
    【UOJ 179】 #179. 线性规划 (单纯形法)
    【BZOJ 4568】 4568: [Scoi2016]幸运数字 (线性基+树链剖分+线段树)
    【BZOJ 4027】 4027: [HEOI2015]兔子与樱花 (贪心)
  • 原文地址:https://www.cnblogs.com/learningPHP-students2018/p/10154497.html
Copyright © 2011-2022 走看看