(36)面向对象的概述
PHP面向对象的程序设计
PHP5
数组和对象 : 都属于PHP的复合类型(一个变量可以存储多个单元)数组中可以存储多个元素,
而对象中不仅可以存多个变量进去还可以把函数存进去。
因此对象比数组更强大,但是它使用没有数组灵活。 不仅可以存储多个数据,还可以将函数存在
对象
对象的三大特性: 封装、继承、多态(数组里没有的而对象里有的三个特性)
只要是PHP5里面比PHP4多加进来的功能都是以对象的形式加进来的。PHP5最大的区别是引入了面向
对象,并且保留了上下兼容。可以把所有的程序都转向PHP5这种面向对象的形式。
面向对象编程(oop ),每一个对象都可以接受、识别、处理、发送数据
PHP并不是一个完全面向对象的语言。
面向对象和面向过程这间的区别
面向过程的最小的单位: 函数,如果到处都是由对象组成的,那么这个程序就是面向过程的。
面向对象的最小的单位: 对象
一、什么是对象
对象就是东西, 一个实体
20桌子、20椅子,多少个东西(实体)就是多少个对象
电话:
对象中有什么?
想要别人知道这个电话是什么样子的这就是属性也就是变量: 品牌, 颜色,电池,大小, 。
。。。
成员方法==函数定义功能的:打电话、发信息, 听音乐, 。。。。
对象:
数组中只保留数值。但是对象有两方面:
成员属性==变量==定义对象的外观和状态
成员方法==函数==定义对象的功能的
不管是属性还是方法统称为成员
总之,一静一动。
文章:
属性:标题、作者、来源、访问数
方法:添加、修改、删除 。。。。。 。。。
电子商城的对象: 用户、购物车、商品、分类、定单、图片、文件对象 ...
二、什么是类
分类、类型、自己定义类型(自定义类型)
桌子、椅子,电脑
在类中定义这个类型的属性和方法,那么在后面创建的对象中就用你定义的方法。
三、 类和对象之间一个关系
过程:声明类-->实例化对象(创建对象)--->用对象
配置单 电脑 ---用电脑
配置单:
CPU: E7400 2.8
内存: 2G DDR3
显示: 512 9300
主板:
price:
定义出一个电脑的类型(配置单就类)
安装出100台电脑(每个电脑就是一个对象)
所以没有配置单(声明类)就不能配置出电脑来(创建对象)
类 声明
对象 创建对象
成员属性 :
成员方法 :
在声明类时,类中的成员就是成员属性和成员方法(类的内容),对这个类创建的对象中的内容,
就是你在类中声明的内容。例如配置单中没有内存,那么创建对象中所有的电脑可能都会缺少内存
。
也就是说想要对象多一个功能就在类里面多声明一个功能,想要对象多一个属性那么就在类里面多
一个属性。
类和对象之间的关系
通过哪个类创建对象,这个对象就属于哪个类的。
并不是面向对象的语法难,
最难的就是如果设计出面向对象的程序;例如:一个项目要用多少个类?定义什么样的类?每个
类是什么时候去创建对象?哪里能用到对象?对象和对象之间的关系?对象之间是如果传递信息的
?
假如说有这样一个项目,让你去组建五个多媒体的教室,每个教室要供五十个学生使用。都是面向
对象的。首先我们需要五个房间,每个房间需要五十台电脑和五十张电脑桌、五十个椅子和一个投
影仪。能看到的实体都是对象。那么我们可以把对象分类:教室类、电脑类、椅子类、桌子类、投
影仪类。每个类是什么样的就在类里面去写。比如:椅子的高、宽、高、颜色等。电脑类的配置。
以此类推,每个对象都做好这样的准备,再把每个类分配到对象中。学生对对象的使用就可以讲对
象关联在一起。
(38)类的声明与对象实例化
一、类的声明
1. 你要开发的是什么, 确定写什么类
假如我们选择电话的类
[修饰类的关键字] class 类名{
成员:也就是
1、成员属性:外观、颜色、电池容量、屏幕尺寸 .... //必须与类型有关
2、成员方法:打电话、发信息、播放音乐、拍照 .... //必须与类型有关
}
在类中声明成员属性时: 前面必须有修饰词,当不知道使用那个时,就使用var,如果知道使用那一个修饰关键字,就不使用var了.例如封装就用privat
类中的成属性,如果创建多个对象时,每个对象有不同的属性值时,不要直接组初值,所有的对象都公用的时候可以给初值,对象都不相同时就不需要,例如输出一个名字是zhangsan ,那么输出一千次都是zhangsan 吗??显然不会。
在创建好对象之后再给值
vat
一个文件只保存一个类, 文件名中包含类名, 文件:类名.class.php
这样做的好处有两点:
(1)、我们通过文件名可以看出这是一个类,可以看出这是一个什么样的类。是一个被包含的类
(2)、如果文件命中不包含类名,那么它是不可以自动加载的。
aaa bbb ccc
变量: aaaBbbCcc 第二、三个单词的首字母大写
函数:aaaBbbCcc 同上
常量:AAABBBCCC 所有字母都大写
类名:AaaBbbCcc 所有首字母大写
一定要有意义
通过类来实例化对象
1. 使用的是new 新建一个对象,加上类名,就是创建那个类的对象
$对象引用=new 类名;
例如:
$p1=new Person;
$p2=new Person;
2. 只要有一个new 关键字就是创建一个对象,创建一个对象就在内存的堆内存中分配了一个空间
所以以上创建的两个对象已经在内存中分配了两个空间。
只有对象才在内存有存储空间,我们才能使用
2. 类中的成员一定要属于这个类,需要相关的属性跟方法
二、实例化对象
三、对象在内存中的分配
四、对象的使用
对象中的成员必须通过对象的引用来访问
对象->成员
对象->成员属性=新值
echo 对象->成员属性
对象->成员方法
$p1=new Person;
$p2=new Person;
$p3=new Person;
$p1->name="zhasan";
echo $p1->name;
$p2->say();
name="zhasan"这是错误的,必须标明对象,因为上面有三个对象。
class Phone { //类里面是空的这样写是不错的。
//成员属性
var $pinPai;
var $color;
var $batteryCapacity; //电池容量
var $screenSize; //屏幕尺寸
//成员方法
static function call($number){ //打电话的方法
}
function message(){ //发短信的方法
}
function playMusic(){
}
function photo(){
}
}
class Person {
var $name="zhangsan";
}
class Person { //声明人
var $name;
var $age;
var $sex;
function say(){
}
function eat(){
}
function run(){
}
}
这节课的内容:
类的声明
类中成员属性
类中成员方法
对象的创建(对象实例化)
对象中成员的访问形式