一、类和对象的关系

  类的实体化结果是对象,而对象的抽象就是类。在开发过程中,我们通常都是先抽象(幻想)出一个类,再用该类去创建对象(实现幻想的内容)。在程序中,直接使用的是我们(实现幻想)的对象,而不是抽象(幻想)的类

二、面向对象和面向过程

1、什么是面向过程

  面向过程就好比一个人 自己洗衣服、做饭,什么事情都是自己解决

2、什么是面向对象

  面向对象就是那个人有了对象,让对象去洗衣服、做饭。

三、如何抽象一个类

 class 类名{
成员属性:
姓名、性别、年龄、身高、体重
成员方法:
说话、走路、学习、吃饭、开车
}

所有的类都是从成员属性和成员方法这两方面去声明,属性和方法都是类中的成员,所以属性又叫做成员属性,方法又叫做成员方法

1、成员属性  -->特征

  在对象中直接声明变量就称为成员属性,可以在类中声明多个成员变量,即对象中可以有多个成员属性

class Person{
var $name; //声明第一个成员属性,用于储存人的名字
var age; //声明第一个成员属性,用于储存人的年龄
var $sex; //声明第一个成员属性,用于储存人的性别
}

2、成员方法  -->功能

class Person{
var $name; //声明第一个成员属性,用于储存人的名字
var $age; //声明第一个成员属性,用于储存人的年龄
var $sex; //声明第一个成员属性,用于储存人的性别
function say(){ //声明第一个方法
echo '人在说话'; //定义人说话的功能
}
function run(){ //声明第二个方法
echo '人在跑步'; //定义人跑步的功能
}
function eat(){ //声明第三个方法
echo '人在吃饭'; //定义人吃饭的功能
}
}

对象就是把相关的属性和方法组织在一起。其中成员属性和成员方法都是可以选的,可以只有成员属性,也可以只有成员方法,也可以没有成员。

四、实例化对象

一个类可以声明多个对象,让对象去访问成员属性和成员方法

class Person{
var $name; //声明第一个成员属性,用于储存人的名字
var $age; //声明第一个成员属性,用于储存人的年龄
var $sex; //声明第一个成员属性,用于储存人的性别
function say(){ //声明第一个方法
echo '人在说话'; //定义人说话的功能
}
function run(){ //声明第二个方法
echo '人在跑步'; //定义人跑步的功能
}
function eat(){ //声明第三个方法
echo '人在吃饭'; //定义人吃饭的功能
}
}
// 实例化对象
$sqyy = new Person();
//成员属性赋值
$sqyy -> name = "伊川";
$sqyy -> sex = "男";
$sqyy -> age = 26;
//访问对象中的成员方法
$sqyy->eat();

五、特殊的对象引用 "$this"

  上面的示例中,我们是实例化一个对象之后再给成员属性赋值和访问成员方法的。那么 $this也可以在成员方法中使用,代表的是当前的这个对象

成员方法调用前的对象是谁,$this就代表谁

class Person{
var $name;
function info(){
$this ->name = "SQYY";
}

六、构造方法与析构方法

1、构造方法

   构造方法是对象创建完成后第一个被对象自动调用的方法,会初始化这个对象,当使用new关键字实例化对象时会自动触发。

<?php
class Person{
//下面是声明人的成员属性,都是没有初始值的,在创建对象时,使用构造方法赋给初始值
var $name; //定义人的名字
var $sex; //定义人的性别
var $age; //定义人的年龄 function __construct($name="SQYY",$sex="男",$age=1){
$this -> name = $name; //在创建对象时,使用传入的参数$name为成员属性 $this->name赋初值
$this -> sex = $sex; //在创建对象时,使用传入的参数$sex为成员属性 $this->sex赋初值
$this -> age = $age; //在创建对象时,使用传入的参数$sex为成员属性 $this->age赋初值
} //下面声明人的成员方法
function say(){
echo "我的名字:" .$this ->name. " ,性别:" .$this -> sex ." 年龄" .$this ->age. "。<br>";
}
} $person1 = new Person(); //创建对象$person1时会自动执行构造方法,默认传参
$person2 = new Person('张三'); //创建对象$person2时会自动执行构造方法,传入第一个参数,其他默认传参
$person3 = new Person('李四','男'); //创建对象$person3时会自动执行构造方法,传入前两个参数,其他默认传参
$person4 = new Person('王五','女','20'); //创建对象$person4时会自动执行构造方法,传入所有参数 $person1 ->say();
$person2 ->say();
$person3 ->say();
$person4 ->say();
?>

2、析构方法

  对象在销毁之前最后一个被对象自动调用的方法,先创建 传入变量后销毁

<?php
header('Content-type:text/html;charset=utf-8');
// 定义一个汽车的类
class car{
// 成员属性
public $name;
public $color; //构造方法
public function __construct($name,$color){
$this->name = $name;
$this->color = $color;
echo "你创建了".$this->name.'<br>';
} // 析构方法
public function __destruct(){
echo "你销毁了".$this->name.'<br>';
}
} // 实例化对象
$hanma = new car('悍马','粉色','H2');
$bmw = new car('宝马','红色','X7');
$benchi = new car('奔驰','黑色','s600'); // unset($bmw);
$bmw = '1111';
?>

如果我们不引用变量,创建完对象之后就会销毁。

<?php 

    header('Content-type:text/html;charset=utf-8');

    // 定义一个汽车的类
class car{
// 成员属性
public $name;
public $color; //构造方法
public function __construct($name,$color){
$this->name = $name;
$this->color = $color;
echo "你创建了".$this->name.'<br>';
} // 析构方法
public function __destruct(){
echo "你销毁了".$this->name.'<br>';
}
} // 实例化对象
new car('悍马','粉色','H2');
new car('宝马','红色','X7');
new car('奔驰','黑色','s600'); ?>

【代码总结】PHP面向对象之类与对象的更多相关文章

  1. JS是面向过程、面向对象还是基于对象?面向对象的代码体现

    一.问题 javascript是面向对象的,还是面向过程的?基于对象是什么意思? 对象: 指的是对某一类事物进行抽象,抽象出这一类事物共同的特征以及行为(也就是属性和方法),那些拥有这一共同属性和方法 ...

  2. javascript之面向对象程序设计(对象和继承)

    总结的文章略长,慎点. 知识点预热 引用类型:引用类型的值(对象)是引用类型的一个实例.在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起.在其他面向对象语言中被称为类,虽然 ...

  3. sdut 上机练习8面向对象编程(对象的数组)

    上机练习8面向对象编程(对象的数组) Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 利用类对象数组完毕N个学生数据(学号是字符串类型.成绩是整型)的输入 ...

  4. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

  5. OC语言的面向对象—类和对象、方法

    1. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 ➢ 打开电脑 ➢ ...

  6. Perl面向对象(2):对象

    本系列: Perl面向对象(1):从代码复用开始 Perl面向对象(2):对象 Perl面向对象(3):解构--对象销毁 第3篇依赖于第2篇,第2篇依赖于1篇. 已有的代码结构 现在有父类Animal ...

  7. Day07:常用模块,面向对象编程(对象&类)及内置函数

    今日内容:1.常用模块2.面向对象编程(*****)    介绍面向对象编程    类    对象3.内置函数------------------------------1.面向过程编程    核心“ ...

  8. Jsoup代码解读之二-DOM相关对象

    Jsoup代码解读之二-DOM相关对象   之前在文章中说到,Jsoup使用了一套自己的DOM对象体系,和Java XML API互不兼容.这样做的好处是从XML的API里解脱出来,使得代码精炼了很多 ...

  9. Java面向对象-类与对象

    Java面向对象-类与对象 类与对象的关系 我们通俗的举个例子,比如人类是一种类,张三这个人就是人类的具体的一个个体,也就是java中的对象:这就是一个类与对象的关系: 类的定义 下面看实例 类的创建 ...

  10. php面向对象之克隆对象

    在前面的PHP面向对象之对象和引用,我们试图以"$b=$a"的方式复制对象以传递对象的值(内容),结果却是传递对象的地址,在结尾为了解决复制对象这个问题,提到了克隆的方法.接下来讲 ...

随机推荐

  1. django 模型增加字段后迁移失败

    任      务:已有models.py文件中定义了 ad类(用来描述广告数据库表结构).现在想增加四个新字段:ad_show_type,big_video_url,is_full_screen,vi ...

  2. Pacemaker+ISCSI实现Apache高可用-配置

    一.配置文件系统 任意节点用ISCSI的共享磁盘创建LVM node1 pvcreate /dev/sdb vgcreate my_vg /dev/sdb lvcreate -L 1G -n web_ ...

  3. SAIF anno

    https://www.cnblogs.com/IClearner/p/6898463.html SAIF--RTL BACK分析法 RTL backward SAIF文件是通过对RTL代码进行仿真得 ...

  4. python 序列 倒着取元素

    当要倒着取元素时,用s[-2]只能取一个, 如果取多个时用s[-9:-1],注意,最后一个-1是不取出来的. 此时要用s[-9:] 最后一个空着就可以取出来了.

  5. Dataset数据的XML持久化处理

    主要方法是用ADO.NET的DataTale 填充到Dataset Dataset 内置了XML持久化的方法,WriteXML和ReadXML:简单的WinFrom实例:从数据库的表 private ...

  6. CodeForces Gym 100213F Counterfeit Money

    CodeForces Gym题目页面传送门 有\(1\)个\(n1\times m1\)的字符矩阵\(a\)和\(1\)个\(n2\times m2\)的字符矩阵\(b\),求\(a,b\)的最大公共 ...

  7. 吴裕雄 python 机器学习——集成学习AdaBoost算法回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  8. red hat 报错:apt-get:找不到命令

    Linux有两个系列:一个是RedHat系列,一个是Debian系列. RedHat系列:Redhat.Centos.Fedora等 Debian系列:Debian.Ubuntu等 RedHat 系列 ...

  9. asp.net 大文件上传配置

    <system.web> <httpRuntime requestValidationMode=" ></httpRuntime> <!--单位:K ...

  10. Python学习之面向对象基础

    python的面向对象和以前学的c++,Java都是一般,大同小异,面向对象基础先谈谈类的构造,编写,属性和方法的可见性等等 1.定义类,创建和使用对象 #定义类 class Student(obje ...