面向对象之继承

继承

extends 关键字来继承类

被继承的类,我们称之为父类

继承后的类,我们称之为子类

子类继承父类非私有的属性和方法

public 在本类,子类,以及类的外部都访问

protected 保护型的属性,自己以及子类能访问

private 私有的不能被继承,只能自己访问

子类可以访问父类的非私有的属性和方法, 使用$this关键字访问

覆盖:子类中声明与父类相同名称的属性和方法,

属性被覆盖后,就无法访问父类的属性

方法被覆盖后,依旧可以访问父类的方法 parent::方法名()

final修饰类和方法

被final修饰的类是不能被继承

被final修饰的方法不能被子类覆盖

static修饰属性和方法

属性

static修改的属性是可以修改的,是所有实例共享,也就是属于类,非静态的是每个对象都会保存一份不一样的

访问:本类中使用 self::$属性名 父类中使用 parent::$属性名

方法

static修饰的方法,它里面只能使用静态属性和静态方法,不能使用普通的属性和普通的方法

访问:类名::静态方法() self::静态方法()

静态方法和属性的用途,单例设计模式:

设计模式其实就是前人总结的一些规律

作为对象的创建模式,单例设计模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局提供这个单例,它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用

接口

声明

interface 接口名{

//方法是不能有实现

function 方法名();

}

实现接口

class 类名 implements 接口1,接口2{

//必须要实现接口中定义的方法,否则会报错

}

抽象类

声明

abstract class 类名{

//抽象类当中也可以包含有实现的方法

function 方法名(){

//

}

//抽象方法不能有实现,一个抽象类中必须要有一个抽象方法

abstract function 方法名();

}

使用

class 类 extends 抽象类{

//实现我们的抽象方法

function 方法名(){

}

}

魔术方法

__toString 当将对象直接输出时,会调用此魔术方法,此方法返回一个字符串

__call 当调用的方法不存在时

__callStatic 当调用的静态方法不存在时

__get 当访问不存在的属性

__set 当给不存在的属性赋值时

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容