【代码总结】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"的方式复制对象以传递对象的值(内容),结果却是传递对象的地址,在结尾为了解决复制对象这个问题,提到了克隆的方法.接下来讲 ...
随机推荐
- 如何转proto
找到对应协议在对应proto中的片段(片段的子也要提取),提出来 放到适合proto文件中(逻辑 || 功能近似协议聚集地) 转换成proto.js 替换 || 增加原有js内容
- Java通过反射读取泛型
1.在这里有必要先提一句关于javabean,建议有一个构造器,而不是必须要写的,这是一个良好的习惯. 这样做肯定是有好处的,如果你的一个类写了带参的构造方法,而没有写空的构造方法,那么,如有有一个类 ...
- java基础(十一)之抽象类和抽象函数
1.抽象函数的语法特征2.抽象类的语法特征3.抽象类的作用 抽象函数 只有函数的定义,没有函数体的函数被称为抽象函数: abstract void func(); 抽象类 使用abstract定义的类 ...
- python 把list中的所有元素串起来变为字符串
list1=['2','3','4'] s=''.join(list1) print(s) '234' 把元素都变为字符串 list2=[3,4,5] list2=[str(i) for i i ...
- android 使用系统级别权限
java.lang.SecurityException: Neither user 10027 nor current process has android.permission.MODIFY_PH ...
- RNGCryptoServiceProvider 生成订单号
先生成1~1000的随机数 class Program { // Create a new instance of the RNGCryptoServiceProvider. private stat ...
- ubuntu16.04spyder闪退
解决办法我试了好用 sudo pip install --upgrade html5lib==.0b8 完事.
- fiddler抓包手机准备工作
1.勾选connections中的:Allow remote computers to connect 2.cmd中查找IP 3.在手机连接的WiFi中设置手动代理为:IP port:8888 4.在 ...
- 部署DVWA时的一些问题和解决办法(二)
DVWA reCAPTCHA key: Missing解决方法 编辑 dvwa/config/config.inc.php这个配置文件 $_DVWA[ 'recaptcha_public_key' ] ...
- centos平台搭建Oracle11g数据库+远程连接
经过了几天的摸爬滚打,终于成功的能在宿主机上(window10上的Plsql)去成功的连上虚拟机上的centos数据库 下面将自己的经验分享给大家: 具体的centos7.centos6上安装Orac ...