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不支持。重写指子类定义一个和父类相同的方法重写