PHP面向对象的知识点整理

概念:
将要完成的工作拆分为“一个一个对象”的任务(功能),每个对象独自完成自己的任务,任务之间的链接通过“调用”来实现,最终完成整体的工作。
面向对象三大特性:
封装  继承  多态
基本形态:
1,定义类;
2,创建类的对象;
3,使用对象;
对象创建的基本形式:$对象名 = new  类名();    
类中的成员:
一个类的内部可以有3种代码:
属性
方法
类常量

属性:
属性分为一般属性和静态属性。
一般属性:就是放在一个类中的变量。
定义形式:public  $v1;(定义不赋值)或public   $v2 = 2;(定义并赋值)。
错误形式:
$v1 = 1;(必须加修饰符)
public  $v2 = 1+3;(右边不能是计算表达式)
public   $v3 = $v2;    (右边不能是变量)

静态属性:定义属性的时候,前面加上关键字:static,此时就是静态属性。
静态属性的意义:
对比来说:一般属性,他的值是隶属于该类的具体某个对象(虽然定义在类中),或者说,每个对象的同样的属性的值,有可能不一样。
静态属性就是:只隶属于类本身——也可以看做是所有对象的“共有数据”。
定义形式:static $v1=10;
使用:类::$静态属性名;

方法:
一般方法:跟面向过程中定义方法一样。
关键字:$this:是一个“伪对象”,代表当前所属类的当前对象。
静态方法:如果在一个方法的前面加上static关键字修饰,则就变成了静态方法。
定义:类名::静态方法名();
使用:S1::show();
注意:1、$this在静态方法中不能使用。2、静态方法中不应调用非静态方法。
关键字:self:含义:代表当前类。使用:通常只能在某个类的某个方法内部代表该类的名称。
构造方法:构造方式是类中的一个“特殊”方法,其作用是在实例化一个对象的同时,给该对象的属性赋值,使之一创建完成,就具有了其本身的特有数据(属性值)。
构造方的特点:
1、构造方法的方法名是固定的:__construct();
2、构造方法必须是普通方法(不能是静态方法);
3、通常该方法应该是public;
4、通常该方法中使用$this这个关键字来对属性进行赋值;
5、当new 类名()的时候,其实是在调用该构造方法;
6、如果一个类中定义了构造方法,则实例化该类时就会调用该方法,且实例化时的参数需要跟构造方法的参数匹配;

类的继承:
简单理解:
某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息。
几个概念:父类/子类:已有类为父类,新建类为子类。单继承:一个类只能从一个上级类继承其特性信息。

修饰符:
在类中的成员,通常都可以在前面加上以下3个修饰符:
public:公共的,共有的,公开的。用该修饰符修饰的成员,可以在“任何位置”使用(访问)。
protected:受保护的。可以在当前类或当前类的上下级具有继承关系的类中访问。
private:私有的。只能在其所在的类中访问。

parent:代表父类
self:代表“本类”(自己当前类)

构造方法析构方法在继承中的表现:
子类中没有定义构造方法时,会自动调用父类的构造方法。因此实例化子类时,需按照父类的构造方法的形式进行。
子类定义了自己的构造方法,则不会自动调用父类的构造方法,但可以手动调用:parent::__construct();。
通常,在子类,很多时候,在构造方法中,都应该(需要)去调用父类的构造方法以节省代码,增加可读性。

重写:
重写又叫覆盖,就是将从父类继承下来的属性或方法重新“定义”——就是从新写。
重写的基本要求:
访问控制权限:
下级的访问控制权限应该不低于上级的访问控制权限:
上级:public  下级:只能public
上级:protected  下级: protected, public
上级:private   下级:private  protected  public——实际此情况无意义。
私有的不能覆盖,而是完全当作自己全新的。
方法的参数形式应该跟父类的一致。
构造方法的重写问题:构造方法不但可以像其他普通方法一样重写,而且,比普通方法更宽松:重写的时候参数可以不一致。

最终类final class:
如果某个类不希望对其进行扩展,则可以将其声明为“最终类”。
形式:final  class  类名{ 。。。。类定义。。。。};
同样,可以有最终方法:final  function  方法名(){。。。。方法定义。。。。};







猜你喜欢

转载自www.cnblogs.com/xwenbin/p/10386954.html