面向对象-上

面向对象

  面向对象是一种编程思想,同面向过程一样也是封装,但是不一样的是面向对象的封装依据主体,也就是说每一个封装包代表一个主体,而其中的变量值为主体的属性,函数为主体实现其功能的方法。

  基本格式:

    class 类名{属性(变量),方法(函数)};

    var_dump(对象)

    只能打印出对象的非静态属性

    无法打印出静态属性、类常量

    1.使用class来定义类名

    2.定义属性跟定义变量一样,方法跟函数一样

      2.1属性和方法的声明有三种模式:public | protected | private

      public:公共的,当前类内、继承链内、类外

      protected:受保护的,当前类内、继承链内

      private:私有的,当前类内

        2.2属性访问格式:对象变量->属性名

         2.3方法调用格式:对象变量->方法名()

          2.4 $this为伪对象,代表调用当前所属类的对象

            2.4.1 伪对象示例:

  

  

3.类名使用时需要先实例化

3.1类名实例化为对象格式:$对象名 = new 类名

3.2此时,($对象名)被称为一个对象。

4.构造方法

4.1在实例化(对象调用类)之后,直接对其属性初始化(赋值)。

4.2基本初始化:

  

  

4.3构造方法:

  

关于函数__construct,当一个类被实例化后,便自动生成__construct函数,所以在类中设置了该方法后,便可以直接在类的实例化之时直接初始化类的属性。

目前版本依旧支持用类名student代替__construct,具有同样的作用,但不推荐使用。

5.析构方法

public function __destruct(){}

在所属类的对象结束之前由系统自动调用并运行,一般用于释放对象所占资源。

6.对象克隆

新对象 = clone 已有的对象

__clone(){}

在类被克隆时系统自动调用。用于在克隆类时修改类中属性的值。写入被克隆的类中

7.instanceof

判断对象是否为某一个类的实例

格式:对象变量 instanceof 类名        (返回值布尔型)

8.静态成员

静态属性

各对象共用的属性(值),同个班级的学生中,班级这个属性

定义格式:public static $属性名

访问语法:类名::$静态属性名

类内部访问静态属性可以使用self关键字代替类名

静态方法

public static function 方法名(){}

调用时不能使用$this

类常量

定义格式:

const 常量名=值;

前不需要加(public | protected | private)声明

访问:

类名::常量名;

类名同样可以用self替代

类文件自动加载函数

当PHP文档遇到使用类语句时,会自动调用函数__autoload,并且函数的参数自动代入所需加载类的类名。

function __autoload($class_name){

include ‘./’.$class_name.’.class.php’;

}

spl_autoload_register(‘函数名’);

依次按照注册语句的顺序查找

注册语句必须发生在实例化语句之前

注册语句使用后,系统默认的__autoload将失效,需要再次注册__autoload才能正常使用

spl_autoload_register(array($对象名,’方法名’));          //非静态方法注册

spl_autoload_register(array(类名,’方法名’));                 //静态方法注册

= spl_autoload_register(‘类名::方法名’);

数据的序列化与反序列化

向文件写入数据:file_put_contents(文件地址,写入的数据)

返回值:写入字符串的字节长度

从文件读取数据:file_get_contents(文件地址)

serialize()

将原数据转换为可以用于保存和传输的字符串数据

unserialize()

将序列化后的字符串数据转换为原始数据

__sleep()

触发:在序列化一个对象的时候

函数内容:return array(元素值为需要序列化的属性值)

__wakeup()

触发:当对象反序列化的时候

作用:在对象反序列化的时候,完成该对象的初始化工作

类继承

关键字:extends

说明:     类1继承类2,那么类1将获得类1的所有成员及特征(包括属性和方法)

继承的实质就是子类能够使用父类的属性和方法,但是并不能修改,因此子类的内容在物理上并不会新增属性和内容,仅仅只是把父类的属性和方法的使用链接给了子类。

子类调用父类的方法,作用的为子类;若希望作用的为父类,则需要使用格式:父类名::父类属性

          parent(代表所在类的父类) 相当于self(代表所在的类)

       当子类的属性或方法与父类重复时,那么在子类中子类的属性或方法将覆盖父类,但是作用范围仅限子类,父类的属性和方法并不会改变,只是子类在应用这些重复的属性或方法时,调用的是子类自己的。

单例模式(三私一公)

使某些类只能被实例化一次

  1. 防止用户通过new来实例化对象

    通过私有化(private)预定义方法__construct

  

  1. 定义公开方法使得该类能被实例化

    1. 定义一个属性,用于存放实例化的对象

  

  1. 定义一个用于实例化对象,该方法为静态且公开。
  2. 方法内容:

    调用时,判断该class是否已经被实例化,判断公式为:

!self::$instance instanceof self

判断当前类的$instance(对象)是否属于当前类

==判断$instance中是否已经存储有了该类的对象

==判断该类是否已经实例化

  

  1. 把方法__clone方法私有化

  

时间: 2024-10-17 06:39:19

面向对象-上的相关文章

java之面向对象---上

1:值类型 八大类型:整性—>byte(1字节),short(2字节),int(4字节),long(8字节): 浮点数—>float(4字节)--8位整,23位小数,1位符号:double(8字节)--11位整数,52位小数,1位符号 字符—>char(2字节)---汉语的原因吧 逻辑型—>bool(1bit) 其它数据类型:类类型. 存储方式:8大类型变量存储于栈中:是值类型 类类型变量,是引用类型,对象存放于堆中,在栈中存引用值,大小固定为4字节. 只能通过new来构造对象,不

Java和C#在面向对象上语法的区别

做了几年了开发一直没有总结什么,回到了家乡的小城做了一名培训班的教员,教授软件开发的知识.细小的知识从头细细嚼来,别有一番滋味.或是以前遗漏的太多,或是确实没有系统的学习过,教学生的过程中自己也对教材有了一遍系统深入的学习.虽然教的和学的都很肤浅,但是为了帮助学生们理解,然后自己也会思考为什么会这样?这种来自于最基础的思考,一直向上反馈,发现这种思考原来可以令自己进步的非常快.虽然目前还在思考入门阶段的问题,已经受益良多了.那么如果把之前的开发中的问题都思考一遍,又能收获多少能?写写博客吧,一直

第04章(面向对象——上)

1 /***************** 2 ***第四章面向对象(上) 3 *******知识点: 4 **************1.类和对象 5 ******************1.1 关键字 6 ******************1.2 定义 7 ******************1.3 使用 8 **************2.方法和属性 9 ******************2.1 关键字 10 ******************2.2 方法重载和重写 11 ******

黑马程序员-Java面向对象上《二》

                         ------- android培训.java培训.期待与您交流! ---------- 1.面向对象的设计思想  面向过程:是以一个流程为单位,考虑它的实现方法,关心的是它的功能实现. 面向对象:是以具体事物为单位,考虑它的属性(特征)和动作(行为). 2.面向对象思考问题的方式 有哪些对象? 对象有什么特征和功能? 对象之间的关系? 3.类和对象 3.1,面向对象的编程思想:是力图使计算机语言中对事物的描述尽可能的与现实中的该事物的本来面目一致

Java编程基础-面向对象(上)

一.面向对象的概念 1.概念:面向对象是把解决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题.当然,一个应用程序会包含多个对象,通过多个对象的相互配合来实现应用程序的功能.这样当应用程序功能发生变动时,只需要修改个别对象就可以了,从而使代码更容易得到维护.面向对象强调的是对象,它使复杂的内容简单化了,让我们从执行者变成了指挥者. 2.特点:面向对象的特点概括起来就是继承性.封装性和多态性. 3. 封装性:封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界

Python 面向对象(上)

一. 什么是面向对象? 1. 在了解面向对象之前,首先我们需要知道两个概念:(1)什么是函数?函数是对功能或动作的一种封装.函数的语法结构如下: def func(arg1): '''函数的内部有函数体''' print("这里是函数内部") func(arg2) 上面的结构中, func是函数名, arg1是形参, 在函数的内部是函数体. 在定义了函数以后, 我们只需要在下面 用函数名接上一个小括号( func() ) 就可以调用函数了, 小括号内部的 arg2 表示实参. (2)什

第七章:Python基础のXML操作和面向对象(上集)

本課主題 XML介绍和操作实战 shutil 模块介绍和操作实战 subprocess 模块介绍和操作实战 XML介绍和操作实战 對於浏览器返回的字符串有以下幾種: HTML JSON,表现是列表和字典的格式 XML XML的應用 一个属性里包含多过属性,一类是页面上做展示的时候可以用到XML,就是为别人来调用(这也是字符串类型的一个XML格式数据);另外一类是配置文件.你可以從文件裡打開一個XML文件,它返回的是一個XML形式的字符串:也可以通過發送 HTTP請求,返回一個 XML 形式的字符

java基础学习_面向对象(上)01_day07总结

==========================================================================================================================================================涉及到的知识点有:1:面向对象(掌握) (0)面向过程和面向过程开发 (1)面向对象思想概述 (2)面向对象的思想特点 (3)把大象装进冰箱(理解) (4)类与对象的关系 (5)类的定义及使用

java基础学习_面向对象(上)02_day07总结

==========================================================================================================================================================涉及到的知识点有:---------------------------------------------------------------------------------------