面向对象的三大特征:封装 继承 和 多态

2025-12-28 11:59:04

1、4个魔术方法   __get  __set   __isset  __unset   

对象的继承特性

几个关键字  final   const  static 关键字


封装:

在面向对象的使用过程中经常用到,某些成员禁止的对象的外部进行访问,这种情况下需要对成员进行封装.常用的关键字private.

成员属性私有化:

private $sex=’值’;

成员方法的私有化:

private function  方法名(){}

私有化特征:

1.一旦某个成员被私有化(private),那么在对象的外部不能够被修改和访问

2.私有化成员在对象的内部可以使用$this 进行访问

3.声明关键字private 不能够和var 关键字同时使用

访问私有成员的错误提示:\

//访问私有成员属性

Fatal error: Cannot access private property Jingjing::$sex in D:\AppServ\www\72\object2\Jingjing.class.php on line 39

访问私有成员方法

Fatal error: Call to private method Jingjing::sa() from context '' in D:\AppServ\www\72\object2\Jingjing.class.php on line 40

魔术方法3  __get

触发时机: 在访问一个私有化成员属性的时候自动触发.

作用: 1.屏蔽错误 2.返回私有成员属性的值

参数: 1个参数

返回值:可有可无  (如果有返回值就是最后成员属性的值)

注意事项: 对非私有化成员无效

魔术方法4  __set

触发时机:在对私有成员属性进行修改的时候自动触发.

作用:1.屏蔽错误 2. 对私有成员属性进行设置值

参数:2个  1 修改的私有成员属性名 2 要修改的值

返回值:不需要

注意事项:对非私有成员无效,在进行操作之前一定要进行判断.

魔术方法5 __isset()

触发时机:对私有化成员属性 进行isset判断时自动触发

作用: 代替对象外部的isset 对私有成员进行isset判断

参数:1个  判断的私有成员属性名

返回值: true或false  一般使用isset(属性)作为返回值

注意事项: 对非私有成员无效,返回值尽量使用isset判断的结果

魔术方法 6 __unset()

触发时机:对私有成员属性进行unset操作的时候自动触发.

作用:代替对象外部的unset 对私有成员进行unset操作

参数:1  要删除的私有成员属性名

返回:不需要

注意事项:对非私有成员无效.在进行操作之前一定要进行判断.

2、继承特性:

在面向对象的开发过程中,2个类之间可能存在代码大部分重复的情况,为了解决这种问题,引入继承概念,一个类继承另一个类之后就具备该类的所有成员(目前这么记即可,私有无法继承)

父类:被其他类继承的类称之为父类,也叫做基类

子类:继承其他类的类成为子类,也叫做派生类

继承的实现方式:

class 子类名 extends 父类名{

//子类独有的成员属性

//子类独有的成员方法

}

继承操作的特征和注意事项:

1.子类继承父类,即具备父类中的虽有成员属性和方法(私有除外)

2.子类可以具备自己独有的成员属性和方法

3.构造方法可以被继承,注意传参问题,继承而来的构造方法需要多少参数,实例化对象时必须传入指定的参数

4.在类中具有继承关系的类,子类中可以重载父类中的方法

5.构造方法也允许重载.而且在子类中的构造方法中可以使用parent::__construct()  来调用父类的构造方法,为了把继承而来的属性初始化.  (关键字 parent代表父类)

6.在子类中可以使用parent::$成员属性名来访问父类中的成员属性(有条件限制:必须是static声明的属性)

7.在子类中可以使用parent::成员方法名()访问父类中的成员方法(有条件显示:必须是static声明的方法)

8.逻辑问题:继承的时候不要瞎继承,一定要具有合理的逻辑关系,不能使用人类来继承鸟类,永远不会变成鸟人的~~~

关于PHP的继承方式:

封装关键字:

private  私有化

protected  受保护的

public  公开的

关于var 关键字的问题:

var 关键字属于public关键字的一种,和public 的功能类似,公开的不受保护和封装的.

var 关键字只能修饰成员属性不能用于修饰成员方法

var 一般只用在学习当中,其余情况全部建议使用public 代替(public在修饰成员方法时,可以忽略不写,推荐 写一下)

继承等级的问题(继承和关键字的问题)

面向对象的三大特征:封装 继承 和 多态

面向对象的三大特征:封装 继承 和 多态

3、封装关键字 

private 1

protected 2

public 3

子类中重载父类的方法,子类方法的封装等级要大于等于父类方法封装等级

其他关键字

final  final最终的意思

作用:

1.在class前使用该关键字修饰类 当前类不允许被继承

2.使用final修饰的成员方法,禁止被重载

const  常量(非重点)

1.在类中声明常量需要使用const关键字

2.声明常量不允许使用$.

3.声明常量要在声明时赋值

常量的访问:

类内部:

类名::常量名

self::常量名

类的外部:

类名::常量名

在子类中:

类名::常量名

parent::常量名

$this   表示当前对象  必须实例化才会有该关键字

parent  表示父类

self    表示当前类

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢