php面向对象

1.OOP作用

 

把一些复杂的问题分拆抽象成较简单的独立对象,通过对象的互相调用去实现方案。

 

2.public,private,protected,final

 

private:只能在本类中调用该方法

protected:只能在当前类,子类,父类中调用该方法

public:没有权限限制,可以随意调用此方法

final:如果父类的方法被声明为final,子类无法覆盖。如果一个类被申明为final,则不能被继承。final不能标识成员属性

 

为什么不直接把这样的成员用public修饰呢?我想是因为为了保持类对外使用的简洁性。类只要把自己的基本功能提供给使用者,至于这些功能的实现细节,是否用到了其他的函数,外界不需要知道也不能知道,只有自己的子类知道而且可以使用,因为它是继承人。

 

 

3.构造函数

 

如果子类没有构造函数,则直接调用父类构造函数,如果有,就调用自己的构造函数,并且子类也可以用过parent::__construct()来同时调用父类的构造函数。

 

 

4.常量

 

定义常量 const constant = 'constant value';

调用常量 self::constant;

常量定义完后不可以被修改

 

5.final

 

可以使类、方法、属性不能被继承、重写。

 

 

6.static

 

当一个类中的属性和方法被定义为static时,他不用通过实例化一个对象去访问,直接可以通过类名::方法/属性的形式来访问,可以理解成:定义为static的就是类的属性和方法,而不是对象的属性和方法。

 

7.$this,self, parent

 

$this代表类的对象,self代表类本身。在静态方法中只能同过self调用静态属性但无法通过$this调用对象的属性。

parent和self相似,代表的时父类本身,一般引用父类的静态构造方法时会用到。

 

8.后期静态绑定

 

self代表当前类的静态(函数)引用,而用static代替self表示该方法是最初调用的类的方法

 

 

9.对象的拷贝和类型约束

 

php的变量赋值分为浅拷贝和深拷贝。普通变量间赋值是深拷贝,指向不同内存空间。对象变量间负值属于浅拷贝,指向同一个内存空间。如果想要深拷贝,需要用到clone。例如我的首页 微博-随时随地发现新鲜事

$a = new test();

$b = clone $a;

 

 

10.tradit

 

PHP是单继承的,只能继承一个类,但是可以用tradit定义多个类。这些类可以用use同时继承。

 

trait A

{

    function a()

    {

    }

}

 

trait B

{

    function b()

    {

    }

}

 

class C

{

    use A,B;

}

 

$c = new C();

$c->a();

$c->b();

 


11.接口

 

类是对象的模版,接口是类的模版。接口不能被实例化。接口就好比是类的说明书,你不需要知道接口里的方法时怎么实现的,只需要知道这个方法就行,所以接口里的方法都是空的。如果接口规定了某个方法,那么类在使用某个接口的时候,就必须实现某个方法。接口可以被继承。

 

 

intetface class A

        

 

 

class Test implements interface A

 

 

 

12.抽象类

 

抽象类与接口的不同点:

1.既可以有空方法,也可以具体实现某个方法

2.类只能继承一个抽象类,但是类可以实现多个接口

 

abstract class A

        

 

 

class Test entends  A

 

 

 

 

13.类的特点

 

封装,继承,多态

多态指的是重载或重写,重载指定义两个同名方法,但php不支持。重写指子类定义一个和父类相同的方法重写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值