php面向对象(二),继承,重写,parent,final关键字及访问控制
来源:互联网 发布:网络运营岗位的测试题 编辑:程序博客网 时间:2024/05/21 10:49
继承
概念:
- 继承:一个类从另一个已有的类获得其特性,称为继承;
- 派生:从一个已有的类产生一个新的类,称为派生;
- 父类/子类:已有类为父类,新建类为子类,父类又可以称为“基类”,上级类,子类又称为派生类,下级类;
- 单继承:一个类只能从一个上级类继承其特性信息,php和大多数面向对象语言(如java)都是单继承模式,c++是多继承;
- 扩展:在子类再来定义自己的一些新的特有的特性信息(属性,方法和常量)。没有扩展,继承也就没有意义了。
php中的继承(extends关键字)
形式:
class A{ // 类成员...}class B extends A{ // 类成员...}
说明:
- php和大多数面向对象(如java)一样是单继承,c++是多继承,但php和java一样单继承但可以多重继承。
访问控制修饰符
形式:
class 类名{ 访问控制修饰符 【static】 属性或方法; }
3个修饰符:
- public 公共的:在所有位置都可以访问(使用);
- protected 受保护的:只能在该类内部和该类的子类或父类中访问(使用);
- private 私有的:只能在该类的内部访问(使用)。
说明:他们的作用是:用来“限制”其所修饰的成员的“可访问性”。
3个访问位置:
- 类的内部
- 类的继承类的内部
- 某个类的外部
访问控制修饰符,需要结合该语法形式所在位置,才能确定是否可访问,则它们的结合可访问性如下:
总结说明:
- public修饰的成员,哪里都能访问;
- 类的内部,可以访问任何级别的成员;
- public具有最宽泛的可访问性,private具有最狭小的可访问性,protected则居中。
parent关键字
含义:parent表示“父母”的意思,在面向对象语法中,代表“父类”–本质上就是代表父类这个“类”,而不是父类的“对象”;
使用方式:
parent::属性或方法: // 通常是静态属性或静态方法,但有时候可能是实例属性或实例方法;
对比前面两个词:
构造方法和析构方法调用上级同类方法的问题
- 如果一个类有构造方法,则实例化这个类的时候,就不会调用父类的构造方法(如果有)
- 如果一个类没有构造方法,则实例化这个类的时候,就会调用父类的构造方法(如果有)
- 如果一个类有析构方法,则销毁这个类的时候,就不会调用父类的析构方法(如果有)
- 如果一个类没有析构方法,则销毁这个类的时候,就会调用父类的析构方法(如果有)
手动调用的语法形式总是这样:
parent::构造方法或析构方法();
覆盖(重写)
含义:将一个类从父类中继承过来的属性和方法“重新定义”–此时相当于子类不想用父类的该属性或方法,,而是重新定义
基本要求:
访问控制权限:
子类覆盖的属性或方法的访问控制权限,不能“低于“父类的被覆盖的属性或方法的访问控制权限
方法的参数形式:
子类覆盖父类的同名方法的时候参数要求和父类一致
ps:虽然父类的私有属性(或私有方法)不能被覆盖,但子类却可以定义和父类名字相同的属性(或方法)
最终类:(和java一样,用final关键字修饰类)
最终类,其实就是一种特殊要求的类,要求该类不允许往下继承下去
形式:
final class 类名{ // 类的成员定义。。。}
最终方法:(和java一样,用final修饰方法)
定义:一个不允许下级类去覆盖(重写)的方法。
形式:
class 类名{ final function 方法名(形参列表...){ // ... }}
再比php和java面向对象
相同点:
- 继承形式同样是通过extends关键字;
- 3个访问控制修饰符和java中同名的3个访问控制符基本一样;
- final关键字含义和使用基本相同;
- php的parent关键字有点类似java的super关键字;
- 诸多修饰符如public,static,final可以同时修改方法,且无顺序区别(通常是public static fianl 方法名)。
不同点:
- java中除了php有的3个访问控制符外还多了一个访问控制符 叫default(因为java中有包的概念);
- php和java的访问修饰符都可以省略,但php省略时默认是public,而java是default(省略);
- php中final不能修饰属性,而java用fianl修饰属性时,表示这是一个常量(php常量用const修饰);
- php中访问控制符不能修饰类,而java可以用访问控制符修饰类。
0 0
- php面向对象(二),继承,重写,parent,final关键字及访问控制
- php面向对象基本概念(Final关键字)
- 【JavaSE学习笔记】面向对象_继承_方法重写、final关键字
- php面向对象(关键字 :final self static const)
- php面向对象(OOP)—final关键字
- 访问控制(access control)及final、static关键字
- 深入java面向对象二:final关键字
- Day10—继承、访问控制符、final关键字、对象创建过程、多态、抽象类
- Java面向对象(构造器、访问控制、重写重载)
- PHP面向对象继承(二)
- Java面向对象04-继承,访问控制修饰符,static和final
- Php面向对象 – 继承和重写
- PHP 面向对象:访问控制
- 面向对象final关键字
- 面向对象-final关键字
- 面向对象-final关键字
- 面向对象--final关键字
- 面向对象技术继承访问控制
- objective-c 中随机数的用法 (3种:arc4random() 、random()、CCRANDOM_0_1() )
- 很有用的一个关于highcharts使用的网页
- Github上600多个iOS开源项目
- Java 8 正式发布,新特性全搜罗
- MFC中强制转换总结
- php面向对象(二),继承,重写,parent,final关键字及访问控制
- JS实现网页版扫雷游戏
- Block、委托、回调函数原理剖析(在Object C语境)——这样讲还不懂,根本不可能!
- Winter(Sleep)Camp2016酱油鸡
- 拥抱cmder,和cmd说再见
- 为什么我在学习英语的过程中跑偏了(二)
- 数据库相关英语翻译(1)
- 设计模式之代理模式
- qtcreator中常用快捷键总结