体验类与对象



1,php面向对象的介绍

在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象。

在现实世界里我们所面对的事情都是对象,如计算机、电视机、自行车等。

对象的主要三个特性:

对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为。对象的形态:当施加那些方法是对象如何响应,颜色,尺寸,外型。对象的表示:对象的表示就相当于身份证,具体区分在相同的行为与状态下有什么不同。

比如 Animal(动物) 是一个抽象类,我们可以具体到一只狗跟一只羊,而狗跟羊就是具体的对象,他们有颜色属性,可以写,可以跑等行为状态。


面向对象内容

类 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。

对象 − 是类的实例。

成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。

成员函数 − 定义在类的内部,可用于访问对象的数据。

继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。

子类 − 一个类继承其他类称为子类,也可称为派生类。

多态 − 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。

重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。

封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。

构造函数 − 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。

析构函数 − 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。

2,定义一个学生类

面向对象思想中提出两个概念,类与对象,类是对一类事物的抽象描述,也就是说类需要具备这个对象的特征,我们平常怎么描述一个人的特征呢?

比如一个学生,我们要想了解他,首先至少得知道这个学生的姓名,性别,年龄,长相等等...而这些属性在类中我们称之为成员属性,了解了一个人基本属性之后我们还想更深一步了解这个人会干什么事情,这个就涉及到这个人的行为,在类中被称之为成员方法,在方法中我们可以定义这个人的具体作用.拿学生student来举例

首先建一个学生类,定义为Student.class.php文件(这里为了区别普通脚本文件通常把类名改成".class.php"的形式,同时类名需要与文件名保持一致)

注意:正是由于类的文件名要与类的名字保持一致,所以一个php文件只能包含一个类定义编码。

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/3/3 0003
 * Time: 上午 9:42
 */
//定义student类
class Student{
    //成员属性
  
    //成员方法
    
}

微信图片_20180303100912.png

通常php对类的命名规范是这样的:

(1). 使用英文名词,类文件采用驼峰式写法。以大写字母作为词的分隔,其他的字母均使用小写,名词的首个字母使用大写,不使用下划线。

(2). 使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML)

(3). 在为类命名前首先要知道它是什么。如果通过类名提供的线索,您还是想不起这个类是什么的话,那么您的设计是做得不够好。

(4). 超过三个单词组成的混合类名是容易造成系统各个实体间的混淆,请重新设计类名。

例如:

class UserAccount{

...

}

class PaintingOrder{

...

}

3,成员属性和成员方法的定义

<?php
class Student{
    //成员属性
    public $studentId;  //学生学号
    public $studentName;//学生姓名
    public $studentAge; //学生年龄
    //成员方法
    public function goSchool(){
        echo "{$this->studentName}去上学<br>";
    }
    public function study($time){
        echo "学习到{$time}";
    }
}

4,对象的创建

新建一个php文件用来实例化student对象

object.php:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/3/3 0003
 * Time: 上午 10:25
 */
header("content-type:text/html;charset=utf8");
require './Student.class.php';
$student=new Student();
echo "<pre>";
var_dump($student);//查看对象的类型以及具体数据
echo "</pre>";

打印结果如下:

微信图片_20180303102957.png

5,成员属性的设置

我们可以看到上面打印的属性都为null,是因为并没有给它设置属性,接下来我们进行属性的设置

代码如下:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/3/3 0003
 * Time: 上午 10:25
 */
header("content-type:text/html;charset=utf8");
require './Student.class.php';
$student=new Student();
$student->studentName='小张';
$student->studentId=1;
$student->studentAge=25;
echo "<pre>";
var_dump($student);
echo "</pre>";

打印结果如下:

微信图片_20180303103602.png

6,成员方法的调用

在object里添加以下代码:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/3/3 0003
 * Time: 上午 10:25
 */
header("content-type:text/html;charset=utf8");
require './Student.class.php';
$student=new Student();
$student->studentName='小张';
$student->studentId=1;
$student->studentAge=25;
$student->goSchool();
$student->study("22:00");

打印结果:

微信图片_20180303104458.png





继续学习
||
<?php echo "类与对象的使用"; ?>
提交重置代码
章节
笔记
提问
课件
反馈
捐赠

用PHP面向对象思想实现对各个类进行封装处理