【代码总结】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"的方式复制对象以传递对象的值(内容),结果却是传递对象的地址,在结尾为了解决复制对象这个问题,提到了克隆的方法.接下来讲 ...
随机推荐
- Apache Kafka(四)- 使用 Java 访问 Kafka
1. Produer 1.1. 基本 Producer 首先使用 maven 构建相关依赖,这里我们服务器kafka 版本为 2.12-2.3.0,pom.xml 文件为: <?xml vers ...
- 题解【洛谷P2323】 [HNOI2006]公路修建问题
题面 题解 跑两遍\(Kruskal\),第一次找出\(k\)条一级公路,第二次找出\(n - k - 1\)条二级公路,直接计算\(MST\)的权值之和即可. 代码 #include <ios ...
- 无聊学习一下MVP这个概念
记录一下学习MVP,好处是便于替换前台页面(winfrom替换成asp.net),不改变页面逻辑层及其以后的层 M:业务逻辑 V:页面 P:页面逻辑 ,充当 页面和业务逻辑的中间层 规则:V和M不能直 ...
- C++ - cpprestsdk
Windows 安装方法: CMake 1.32+,生成过程会将 vcpkg 下载好,配置到系统环境变量,然后用 vcpkg 安装依赖库(github 上有列出需要的依赖库). Github 上的示例 ...
- nmon +java nmon Alalizy agent 动态交互监控
下载地址:1. Download and install nmon. - for linux platform, you can download form: http://nmon.sourcefo ...
- JVM探秘:VisualVM监控远程Java进程
VisualVM在Java 8中是JDK自带的一个图形化工具,项目主页 VisualVM,在后续版本中可能会从JDK移除. VisualVM可以监控Java进程的CPU与内存占用情况,可以监控Java ...
- C++11 新特性学习
在Linux下编译C++11 #include<typeinfo> int main() { auto a=; cout<<typeid(a).name()<<en ...
- 大数据的特征(4V+1O)
数据量大(Volume):第一个特征是数据量大,包括采集.存储和计算的量都非常大.大数据的起始计量单位至少是P(1000个T).E(100万个T)或Z(10亿个T). 类型繁多(Variety):第二 ...
- 1.2 Jmeter 使用代理录制脚本
参考文档: http://jingyan.baidu.com/article/4e5b3e19333ff191911e2459.html 利用JMeter配置代理:1.添加线程组: Test Pla ...
- Python 之路
Python之路[第一篇]:Python简介和入门 Python之路[第二篇]:Python基础(一) Python之路[第三篇]:Python基础(二) Python之路[第四篇]:模块 Pytho ...