【代码总结】PHP面向对象之类与对象
一、类和对象的关系
类的实体化结果是对象,而对象的抽象就是类。在开发过程中,我们通常都是先抽象(幻想)出一个类,再用该类去创建对象(实现幻想的内容)。在程序中,直接使用的是我们(实现幻想)的对象,而不是抽象(幻想)的类
二、面向对象和面向过程
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面向对象之类与对象的更多相关文章
- JS是面向过程、面向对象还是基于对象?面向对象的代码体现
一.问题 javascript是面向对象的,还是面向过程的?基于对象是什么意思? 对象: 指的是对某一类事物进行抽象,抽象出这一类事物共同的特征以及行为(也就是属性和方法),那些拥有这一共同属性和方法 ...
- javascript之面向对象程序设计(对象和继承)
总结的文章略长,慎点. 知识点预热 引用类型:引用类型的值(对象)是引用类型的一个实例.在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起.在其他面向对象语言中被称为类,虽然 ...
- sdut 上机练习8面向对象编程(对象的数组)
上机练习8面向对象编程(对象的数组) Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 利用类对象数组完毕N个学生数据(学号是字符串类型.成绩是整型)的输入 ...
- java基础面向对象之类与对象
java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...
- OC语言的面向对象—类和对象、方法
1. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 ➢ 打开电脑 ➢ ...
- Perl面向对象(2):对象
本系列: Perl面向对象(1):从代码复用开始 Perl面向对象(2):对象 Perl面向对象(3):解构--对象销毁 第3篇依赖于第2篇,第2篇依赖于1篇. 已有的代码结构 现在有父类Animal ...
- Day07:常用模块,面向对象编程(对象&类)及内置函数
今日内容:1.常用模块2.面向对象编程(*****) 介绍面向对象编程 类 对象3.内置函数------------------------------1.面向过程编程 核心“ ...
- Jsoup代码解读之二-DOM相关对象
Jsoup代码解读之二-DOM相关对象 之前在文章中说到,Jsoup使用了一套自己的DOM对象体系,和Java XML API互不兼容.这样做的好处是从XML的API里解脱出来,使得代码精炼了很多 ...
- Java面向对象-类与对象
Java面向对象-类与对象 类与对象的关系 我们通俗的举个例子,比如人类是一种类,张三这个人就是人类的具体的一个个体,也就是java中的对象:这就是一个类与对象的关系: 类的定义 下面看实例 类的创建 ...
- php面向对象之克隆对象
在前面的PHP面向对象之对象和引用,我们试图以"$b=$a"的方式复制对象以传递对象的值(内容),结果却是传递对象的地址,在结尾为了解决复制对象这个问题,提到了克隆的方法.接下来讲 ...
随机推荐
- 使用ResponseBodyAdvice统一包装响应返回String的时候出现java.lang.ClassCastException: com.xxx.dto.common.ResponseResult cannot be cast to java.lang.String
代码如下: @Override public ResponseResult<Object> beforeBodyWrite(Object returnValue, MethodParame ...
- java基础(六)之继承初探
什么是继承? 一个类得到了另一个类当中的成员变量和成员方法.java只支持单继承.一个子类只允许继承一个父类,一个父类可以被多个子类继承. 比如下面的一个例子, 先创建一个Person类 class ...
- codeforces 597 div2 E. Hyakugoku and Ladders(概率dp)
题目链接:https://codeforces.com/contest/1245/problem/E 题意:有一个10x10的网格,左下角是起点,左上角是终点,从起点开始,如图所示蛇形走到终点,每一步 ...
- codeforces 597div2 F. Daniel and Spring Cleaning(数位dp+二维容斥)
题目链接:https://codeforces.com/contest/1245/problem/F 题意:给定一个区间(L,R),a.b两个数都是属于区间内的数,求满足 a + b = a ^ b ...
- java1.8特性
java1.8特性 1.lambda表达式 Java8为集合类引入了另一个重要概念:流(stream).一个流通常以一个集合类实例为其数据源,然后在其上定义各种操作 例如 .filter .forEa ...
- Bugku-CTF之这是一个神奇的登陆框
Day32 这是一个神奇的登陆框 http://123.206.87.240:9001/sql/ flag格式flag{}
- 出现xxxtbox问题又有集群网络等问题时的解决
出现xxxtbox问题又有集群网络等问题时的解决 集群环境本身问题引发 重新rancher上删除集群,正常构建集群成功,环境就没问题,否则由于环境问题怎么找解决方案都有问题
- 网页链接在QQ内因多人投诉被拦截的解决方案
背景 相信大家经常会遇到一个头疼的问题就是,明明自己的网页没有违规内容(比如线下活动的推广),但链接在QQ内转发分享会被QQ管家拦截,导致用户无法访问. 那么当大家遇到这个问题的时候应该怎么办呢?不用 ...
- Python 多任务(进程) day1(3)
进程间的通信 可以用socket进行进程间的通信 可以用同意文件来进行通信(但是在硬盘上读取和写入比较慢,内存运行太快了) Queue队列(记得是队列) 在同一内存中通信 因为进程之间不能共享全局变 ...
- Docker - 命令 - docker network
概述 docker network 命令 背景 newwork 是 docker 的一种资源 经常会使用 需要整理命令 1. 引入 概述 docker run 时, 将容器端口映射到宿主机 场景 启动 ...