面向对象二论

再接着说类。

常见的五种类

在php中,我们经常用到普通类([权限修饰符 可省略] class Test{})、普通抽象类(abstract [权限修饰符 不能是private 可省略] class Test{})、特殊的抽象类(interface [权限修饰符 不能是private 可省略] Test{} 即接口)、静态类([权限修饰符 可省略] static Test{},与普通类不同的是,类中含有static定义的静态属性或方法)和最终类(final class Test{})。

类的命名规范

每个单词的首字母大写,不能用下划线或空格其他特殊字符分割,不能用数字开头。

类的组成

属性方法组成,

属性即状态,比如一件衣服制作封装成一个类,那衣服的颜色、尺寸大小就是它的属性;

方法即行为,比如同上,衣服制作类中,制作衣服的动作流程就是它的方法。

另外在php中,如果一个类或方法或属性不加权限修饰符,它默认的权限修饰符就是public。

类的属性和方法的种类

说到类的属性,就不得不说数据类型,因为属性由数据类型构成。

那么,php的数据类型有哪些?

总结起来一句话,三大类八小类

标量数据类型(数据结构中基础单元,只能储存一个数据)

1、布尔型(boolean) 最简单的数据类型,只有两个值:true(真) / false(假)

2、字符串(string) 字符串是连续的字符序列

3、整型(integer 可省略为int) 整型包含所有的整数,可以是正数也可以是负数,范围必须介于-2 ^ 31到2 ^ 31之间

4、浮点型(float or double) 浮点型也是用来表示数字的,与整型不同除了可以表示整数外它还可以用来表示小数和指数

复合数据类型(能储存多个数据)

5、数组 (array)可以存储相同或不相同任意数据类型的多个值

6、对象(objet)被定义是类的实例

特殊数据类型

7、资源(resources)不是确切的数据类型,用于存储对某些函数调用或外部PHP资源的引用,比如 打开或引用一个文件,数据库的调用,crul函数调用

8、空值(null) 只能有一个值null

类的常见四种方法

有普通方法([权限修饰符 ] function 方法名(){})、静态方法([权限修饰符 ] static function 方法名(){})、抽象方法(abstract [权限修饰符] function 方法名(); )、最终方法(final [权限修饰符] function 方法名(){})

其中,最终方法和抽象方法有点意思,可以让我们回顾上一篇面向对象多态的概念。

最终方法

当一个类或方法已经十分完善我们可以定义为最终类或最终方法,而用final定义后的方法不能再重写,final只能修饰类和方法,不能修饰成员属性

抽象方法

另外,一个抽象类中,可以有也可以没有抽象方法,但有抽象方法,必须是抽象类,用abstract关键字修饰(abstract class Tes(){}),抽象方法的一大特点是没有方法体。

简单描述php的五种类

普通类没啥好说,只有成员属性和成员方法,至于成员属性和成员方法判断的依据,大概就是属性或方法有没有被static、final、const,abstract等关键字修饰

静态类特点:

1、可以被继承,不能被实例化 通过类名::直接调用(其中::叫做范围解析操作符,又名域运算符),静态方法调用亦是如此(类名::方法名)

2、类名用static 关键字修饰,含有static定义的静态属性或方法的类,自动变为,或者说自动被声明为静态类

3、被声明伪静态类不允许包含任何非静态成员

4、抽象静态类中的静态方法不允许调用,它必须先被继承

(普通)抽象类特点:

1、可以被继承,不能被实例化

2、类名用abstract 关键字修饰

3、抽象方法没有方法体(abstract [权限修饰符] function 方法名(); ),以分号结尾,没有{}符号。在接
口中抽象方法,abstract关键字可以省略,如function 方法名();

4、子类继承父类时,抽象方法必须继承实现。正因为抽象方法没有方法体,当子类继承或实现抽象的父类时,也必须实现父类中的抽象方法。

5、子类继承父类时,抽象方法的参数只能多,不能少。父类的抽象方法有两个参数,那子类抽象方法的参数必须两个以上,父类的抽象方法没有参数,子类可以有参数

最终类特点:

1、不可以被继承,方法无法重写,我们知道多态的主要特点是重写,包括类的属性和方法重写,使用final关键字修饰后的属性和方法是不能再去重写定义的。

2、类名用final关键字修饰

接口特点(特殊的抽象类):

1、可以继承,可实现。 有点意思的是,通过这个特点,我们实现类似多继承的功能。因为php的类是单继承的,想要一个类实现不同功能的话就可以用接口实现(interface extends 类1 implements接口1,接口2)一个类实现一个接口用implements关键字修饰,实现多个接口用逗号分割。

2、类名interface关键字修饰。interface [权限修饰符 不能是private 可省略] Test{}

类什么时候实现,什么时候继承?

同类继承,不同类实现。

比如 子类继承父类,接口继承接口,类实现接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值