PHP类的继承、重写、重写...
2018-01-01 21:43
120 查看
类有两个功能:
实例化对象
被其他的类所继承
类的继承: extends
特点 : 单继承,多实现;
在PHP中,一个类只能继承自一个其他的类,不同同时继承多个类,单继承也是大多数面向对象语言的特性
强调 :
属性和方法都可以被继承
继承的本质,不是把父类中的代码复制到子类的内部,而是通过继承链条,找到相应的成员!
类的重写override
重写也叫作覆盖,就是当子类的成员与父类的成员的名字相同的时候,从父类继承下来的成员会重新定义!
子类中调用父类构造方法:
语法:
父类名::父类中的方法名 Goods::__construct();
parent::父类中的方法名 parent::__construct(); 注意: parent不一定就代表本类的上一级父类,如果父类中没有找到相应的方法,会继续的向更上一级的父类查找!
访问控制修饰符 : public、protected、privite
public:公共的,当前类内,继承链类内和类外都可以被访问到
protected:受保护,当前类内以及继承链上的类内可以被访问到
private:私有的,只有当前类内可以被访问到
final最终类
final类:也叫作最终类,不能被继承,只能实例化对象
最终方法 final method
abstract抽象类
abstract类:也叫作抽象类,不能实例化对象,只能被继承
特别强调
1,如果一个类继承自一个抽象类,而其自身不是一个抽象类,则必须实现父类中的所有的抽象方法!
2,抽象类中,不但可以包括抽象方法,还可以包括其他任意的普通成员(属性、常量、非抽象方法),都可以被子类所继承
3,通俗的讲,抽象类给其子类留下的不但有“遗产”,还有“遗嘱”!
抽象类的作用
1,可以完成普通类的继承,为其他的类提供公共的代码!
2,抽象类往往用于规定子类中必须要完成的方法或者成员,规定子类的方法结构,有时候为了保证完成一系列功能相似的多种操作类的结构一致,我们要求这些类都继承自一个相同的抽象类!
interface接口
接口就是一个对象对外的公开(public)的操作方法!
在PHP中定义一个接口,其实就是一种纯粹的规范或规定,规定该接口的下级类必须要“实现”的公共方法!
接口不是类!接口是类的规范,类又是对象的规范!
两种成员:
接口常量:其实就是普通的常量,只不过是出现在接口中而已!
抽象方法:没有方法体的方法,但是此时,抽象方法必须声明为public(与抽象类中的抽象方法不同)
接口的定义 是通过关键字interface来定义的:
思考: 为什么这里的抽象方法不需要使用abstract关键字?
因为接口中的方法只能是抽象方法,不能是其他的普通方法!不会造成混淆!
此时,如果要使接口作用到类上,就必须使用implements关键字,意思为“实现”,其实和继承的本质是一样的!
当一个类“实现”一个接口的时候,也只有两种选择:
1,实现该接口中所有的公开的抽象方法(完善方法体)
2,如果该类没有实现接口中的部分(或全部)公开的抽象方法,就应该把该类声明成抽象类,然后等待更下一级的类去实现!此时,没有被实现的方法最好继续声明成抽象方法!
接口与抽象类的比较
1,接口不是类,但是抽象类是类
2,从逻辑或结构上看,接口可以看成是抽象类的一个“子集”,比抽象类更“抽象”,只有抽象方法没有其他的普通的方法
3,PHP不支持多继承,但是,支持多实现!也就是说,一个类可以同时实现多个接口,这有是接口与抽象类最本质的区别!
4,接口与抽象类都可以作为其他类的规范,都可以规定下级类的内部结构,但是在真实的项目中,接口使用的要多一些!
实例化对象
被其他的类所继承
类的继承: extends
特点 : 单继承,多实现;
在PHP中,一个类只能继承自一个其他的类,不同同时继承多个类,单继承也是大多数面向对象语言的特性
强调 :
属性和方法都可以被继承
继承的本质,不是把父类中的代码复制到子类的内部,而是通过继承链条,找到相应的成员!
类的重写override
重写也叫作覆盖,就是当子类的成员与父类的成员的名字相同的时候,从父类继承下来的成员会重新定义!
子类中调用父类构造方法:
语法:
父类名::父类中的方法名 Goods::__construct();
parent::父类中的方法名 parent::__construct(); 注意: parent不一定就代表本类的上一级父类,如果父类中没有找到相应的方法,会继续的向更上一级的父类查找!
访问控制修饰符 : public、protected、privite
public:公共的,当前类内,继承链类内和类外都可以被访问到
protected:受保护,当前类内以及继承链上的类内可以被访问到
private:私有的,只有当前类内可以被访问到
final最终类
final类:也叫作最终类,不能被继承,只能实例化对象
最终方法 final method
abstract抽象类
abstract类:也叫作抽象类,不能实例化对象,只能被继承
特别强调
1,如果一个类继承自一个抽象类,而其自身不是一个抽象类,则必须实现父类中的所有的抽象方法!
2,抽象类中,不但可以包括抽象方法,还可以包括其他任意的普通成员(属性、常量、非抽象方法),都可以被子类所继承
3,通俗的讲,抽象类给其子类留下的不但有“遗产”,还有“遗嘱”!
抽象类的作用
1,可以完成普通类的继承,为其他的类提供公共的代码!
2,抽象类往往用于规定子类中必须要完成的方法或者成员,规定子类的方法结构,有时候为了保证完成一系列功能相似的多种操作类的结构一致,我们要求这些类都继承自一个相同的抽象类!
interface接口
接口就是一个对象对外的公开(public)的操作方法!
在PHP中定义一个接口,其实就是一种纯粹的规范或规定,规定该接口的下级类必须要“实现”的公共方法!
接口不是类!接口是类的规范,类又是对象的规范!
两种成员:
接口常量:其实就是普通的常量,只不过是出现在接口中而已!
抽象方法:没有方法体的方法,但是此时,抽象方法必须声明为public(与抽象类中的抽象方法不同)
接口的定义 是通过关键字interface来定义的:
思考: 为什么这里的抽象方法不需要使用abstract关键字?
因为接口中的方法只能是抽象方法,不能是其他的普通方法!不会造成混淆!
此时,如果要使接口作用到类上,就必须使用implements关键字,意思为“实现”,其实和继承的本质是一样的!
当一个类“实现”一个接口的时候,也只有两种选择:
1,实现该接口中所有的公开的抽象方法(完善方法体)
2,如果该类没有实现接口中的部分(或全部)公开的抽象方法,就应该把该类声明成抽象类,然后等待更下一级的类去实现!此时,没有被实现的方法最好继续声明成抽象方法!
接口与抽象类的比较
1,接口不是类,但是抽象类是类
2,从逻辑或结构上看,接口可以看成是抽象类的一个“子集”,比抽象类更“抽象”,只有抽象方法没有其他的普通的方法
3,PHP不支持多继承,但是,支持多实现!也就是说,一个类可以同时实现多个接口,这有是接口与抽象类最本质的区别!
4,接口与抽象类都可以作为其他类的规范,都可以规定下级类的内部结构,但是在真实的项目中,接口使用的要多一些!
相关文章推荐
- php类和命名空间介绍,成员方法和类方法,类的继承与方法重写
- PHP类的变量与成员,及其继承、访问与重写要注意的问题
- PHP类实例教程(八):类的继承
- Java中继承、多态、重载和重写介绍
- 静态(static)方法的继承和重写
- 类的继承/方法的重写/与C++的比较day11
- 1.为什么需要继承?如何继承?继承到什么? 2.方法的重载与重写的区别 3.类型的自动转换和强制转换 4.子类特有的方法的调用规则 5.子类重写的方法的调用规则 6.多态的理解 7.面向对象的三大特征
- [原创]C#中的继承、重写、覆盖、多态、virtual override 以及其他
- 从重载与重写来看OOP的三大特性:继承、多态、封装。
- Python类的继承和方法重写总结
- JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍
- PHP类继承父类时,用类名做构造函数测试
- .net知识和学习方法系列(四)继承中方法的隐藏和重写
- 实训C++语言设计——Student学生类设计、继承、重写
- 重载和重写、继承和多态的区别
- JAVA中子类是否可以可以继承、重写父类的静态方法--总结
- 静态方法隐藏、重写、继承
- JAVA面试题解惑系列(九)――继承、多态、重载和重写
- 静态(static)方法的继承和重写
- 继承之重写(覆盖)父类方法的约束总结