PHP面向对象(OOP)编程完全教程:4.如何抽象出一个类?
来源:互联网 发布:java的socket如何部署 编辑:程序博客网 时间:2024/05/17 04:03
上面已经介绍过了, 面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以我们首先要做的就是如何来声明类, 做出来一个类很容易,只要掌握基本的程序语法定义规则就可以做的出来,那么难点在那里呢? 一个项目要用到多少个类,用多少个对象, 在那要定义类,定义一个什么样的类,这个类实例化出多少个对象, 类里面有多少个属性, 有多少个方法等等,这就需要读者通过在实际的开发中就实际问题分析设计和总结了。 类的定义:
1
class
类名{
2
}
使用一个关键字class和后面加上一个你想要的类名以及加上一对大括号, 这样一个类的结构就定义出来了,只要在里面写代码就可以了, 但是里面写什么? 能写什么?怎样写才是一个完整的类呢?上面讲过来,使用类是为了让它实例出对象来给我们用, 这就要知道你想要的是什么样的对象了,像上面我们讲的一个装机配置单上写什么,你装出来的机子就有什么。比如说,一个人就是一个对象,你怎么把一个你看好 的人推荐给你们领导呢?当然是越详细越好了:
首先, 你会介绍这个人姓名、性别、年龄、身高、体重、电话、家庭住址等等。
然后,你要介绍这个人能做什么, 可以开车, 会说英语, 可以使用电脑等等。
只要你介绍多一点, 别人对这个人就多一点了解, 这就是我们对一个人的描述, 现在我们总结一下,所有的对象我们用类去描述都是类似的, 从上面人的描述可以看到, 做出一个类来, 从定义的角度分两部分, 第一是从静态上描述, 第二是从动态上描述, 静态上的描述就是我们所说的属性, 像上面我们看到的,人的姓名、性别、年龄、身高、体重、电话、家庭住址等等。 动态上也就是人的这个对象的功能,比如这个人可以开车, 会说英语, 可以使用电脑等等,抽象成程序时,我们把动态的写成函数或者说是方法,函数和方法是一样的。所以,所有类都是从属性和方法这两方面去写, 属性又叫做这个类的成员属性,方法叫做这个类的成员方法。
1
class
人{
2
成员属性:姓名、性别、年龄、身高、体重、电话、家庭住址
3
成员方法:可以开车, 会说英语, 可以使用电脑
4
}
属性:
通过在类定义中使用关键字" var "来声明变量,即创建了类的属性,虽然在声明成员属性的时候可以给定初值, 但是在声明类的时候给成员属性初始值是没有必要的,比如说要是把人的姓名赋上“张三”,那么用这个类实例出几十个人,这几十个人都叫张三了,所以没有必 要, 我们在实例出对象后给成员属性初始值就可以了。
如: var $somevar;
方法(成员函数):
通过在类定义中声明函数,即创建了类的方法。
如:
1
function
somefun(参数列表) {
2
... ...
3
}
01
<?php
02
class
Person
03
{
04
//下面是人的成员属性
05
var
$name
;
//人的名子
06
var
$sex
;
//人的性别
07
var
$age
;
//人的年龄
08
09
//下面是人的成员方法
10
function
say() {
//这个人可以说话的方法
11
echo
"这个人在说话"
;
12
}
13
14
function
run() {
//这个人可以走路的方法
15
echo
"这个人在走路"
;
16
}
17
}
18
?>
上面就是一个类的声明, 从属性和方法上声明出来的一个类, 但是成员属性最好在声明的时候不要给初使的值, 因为我们做的人这个类是一个描述信息, 将来用它实例化对象, 比如实例化出来10个人对象, 那么这10个人, 每一个人的名子, 性别, 年龄都是不一样的, 所以最好不要在这个地方给成员属性赋初值, 而是对每个对象分别赋值的。
用同样的办法可以做出你想要的类了, 只要你能用属性和方法能描述出来的实体都可以定义成类, 去实例化对象。
为了加强你对类的理解, 我们再做一个类, 做一个形状的类, 形状的范围广了点, 我们就做个矩形吧, 先分析一下, 想一想从两方面分析,矩形的属性都有什么? 矩形的功能都有什么?
01
class
矩形
02
{
03
//矩形的属性
04
矩形的长;
05
矩形的宽;
06
07
//矩形的方法
08
矩形的周长;
09
矩形的面积;
10
}
01
<?php
02
class
Rect
03
{
04
var
$kuan
;
05
var
$gao
;
06
07
function
zhouChang() {
08
计算矩形的周长;
09
}
10
11
function
mianJi() {
12
计算矩形的面积;
13
}
14
}
15
?>
如果用这个类来创建出多个矩形对象,每个矩形对象都有自己的长和宽, 都可以求出自己的周长和面积了。
- PHP面向对象(OOP)编程完全教程:4.如何抽象出一个类?
- PHP面向对象(OOP)编程完全教程:4.如何抽象出一个类?
- 【PHP面向对象(OOP)编程入门教程】4.如何抽象出一个类?
- PHP面向对象(OOP)编程入门-4.如何抽象出一个类?
- php面向对象(OOP)编程完全教程
- php面向对象(OOP)编程完全教程
- php面向对象(OOP)编程完全教程
- PHP面向对象(OOP)编程完全教程:5.如何实例化对象?
- php面向对象(OOP)编程完全教程地址
- (4) php面向对象(OOP)编程完全教程
- PHP面向对象(OOP)编程完全教程:3.什么是面向对象编程呢?
- PHP面向对象(OOP)编程完全教程:1.什么是面向对象?
- PHP面向对象(OOP)编程完全教程:2.什么是类,什么是对象,类和对象这间的关系
- php面向对象(OOP)编程教程
- PHP面向对象(OOP)编程完全教程:22.把对象串行化serialize()方法
- PHP面向对象(OOP)编程完全教程:8.构造方法__construct()与析构方法__destruct()
- PHP面向对象(OOP)编程完全教程:8.构造方法__construct()与析构方法__destruct()
- PHP面向对象(OOP)编程完全教程:10.__set(),__get(),__isset(),__unset()四个方法的应用
- ucenter同步登录与同步退出
- java-poi方式读取excel
- [leetcode] Triangle
- [乐意黎原创] PHP数字补零的两种方法
- hibernate映射oracle自增长
- PHP面向对象(OOP)编程完全教程:4.如何抽象出一个类?
- js的转换精度问题以及解决方案
- VS2010中错误1 error MSB8008: 指定的平台工具集(v110)未安装或无效。请确保选择受支持的 PlatformToolset 值
- 电信宽带连接数限制的一个坑
- JAVA中int、String的类型转换
- 网络中进程之间如何通信
- 让linux CentOS6在同一个窗口打开文件夹(转载)
- Training--保存数据(3)-- 在SQL数据库中保存数据
- ios强制竖屏启动,状态栏位置设置