韩顺平php视频笔记77 抽象类vs接口 关键字final const
继承和实现接口的比较:
(1) 可以认为 实现接口是对单一继承的补充.
(2) 可以在不破坏类层级关系的前提下,对某个类功能扩展.
-------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 如果我们希望某个类不被其它的类来继承(可能因为安全考虑...), 可以使用final
<?php
final class A{
}
class B extends A{
}
echo "ok";
?>
2. 如果我们希望某个方法,比如计算个人所得税的方法,不能子类改写,可以使用fianl 来修饰方法
class A{
final public function getRate($salary){
return $salary*0.08;
}
}
class B extends A{
//不能去覆盖父类的getRate方法.
/*public function getRate($sal){
return $sal*0.01;
}*/
}
$b=new B();
echo $b->getRate(100);
3. final关键字不能去修饰属性.????????????
----------------------------------------------------------------------------------------------------------------------------
u const 关键字的讲解
//当你有一个属性,不希望被修改,则考虑使用const 做成常量
基本用法是
class A{
const 常量名=赋初值;
}
interface 接口名{
const 常量名=赋初值;
}
常量是public
使用 类名::常量名; 接口名::常量
<?php
class A{
//常量在定义的时候,必须给初值.
//const 关键字前面不要带修饰符号.
const TAX_RATE=0.08;
public function payTax($val){
//常量不能修改.
//A::TAX_RATE=0.01;
//return $val*self::TAX_RATE; 【ok】
return $val*A::TAX_RATE; //【ok】
}
}
$a=new A();
echo $a->payTax(200);
?>
1. 常量在定义的时候需要赋初值
2. 常量不能修改.
3. 常量名不能有 $, 一般是大写, 默认是public
4. 常量在类的内部使用 self::常量的名称 类名::常量的名称
在类的外部使用 类名::常量的名称.
韩顺平php视频笔记77 抽象类vs接口 关键字final const相关推荐
- 韩顺平php视频笔记75-76 抽象类 接口
抽象 为什么设计抽象类这个技术? 1. 在实际开发中,我们可能有这样一种类,是其它类的父类,但是它本身并不需要实例化,主要用途是用于让子类来继承,这样可以到达代码复用. 同时利于项目设计者,设计类. ...
- 韩顺平php视频笔记83-87 防盗链 $_SERVER http协议相关 文件相关
第83集略(内容之前讲过) http协议 1. http协议是建立在 tcp/ip协议基础上. 2. 我们的web开发数据的传输都是依赖于http协议. 3. http协议全称是 超文本传输协议 h ...
- 韩顺平php视频笔记80 81 错误日志 异常捕获
php错误日志保存 保存错误日志的用处是便于,后续分析. 基本方法是使用 error_log来实现. 基本用法是: //自定义错误函数 function my_error3($errno,$errm ...
- 韩顺平php视频笔记79 80 错误和异常处理的机制 错误处理器 错误触发器
注意:php中 php中错误和异常处理的机制 如果没有错误处理机制怎样? <?php //打开文件- $fp=fopen("aaa.txt","r"); ...
- 韩顺平php视频笔记72-74 面向对象编程的三大特征3 重载override与重写overload 魔术常量
php中的重载感觉不是很完善 [注意]php不能以参数列表不同的形式来构成重载,构造方法同样也不行 PHP5 中如何通过魔术函数来实现方法重载的效果 代码说明 <?php class A{ p ...
- 韩顺平php视频笔记71 面向对象编程的三大特征2 访问修饰符 继承
php提供了三种访问控制符号. 有三种 1. public 表示全局,可以在本类,类外部,子类 中使用 2. protected 表示受到保护, 可以在本类, 子类中使用 3. private 表示 ...
- 韩顺平php视频笔记70 面向对象编程的三大特征1 抽象 封装
php面向对象编程的三大特征 ① 封装 ② 继承 ③ 多态 class Account { public $blance; public $no; public function qun(){ } p ...
- 韩顺平php视频笔记69 静态变量与静态方法
静态变量(类变量)与静态方法(类方法) 思路: 1. 使用全局变量 * 什么是全局变量, 在程序中,都可以使用的变量称为全局变量. 当我们了解全局变量后,我们来看看如何解决问题? <?php / ...
- 韩顺平php视频笔记68 析构函数 php垃圾回收机制
以上注释取消后,对象析构方法执行顺序为: p1 p3 p2
最新文章
- 候选翻译文章列表[示范]
- Spark的RDD 文件读取与保存
- dim private public static_static方法 (静态方法)
- django-oscar-paypal出现UnicodeEncodeError: 'latin-1' codec can't encode characters in position XXXX
- C++笔记-lambda表达式需要注意的地方
- 高并发整体可用性:大规模集群下的分片管理策略
- 一个前端博客(7)——事件绑定和移除事件
- eclipse集成testng插件
- C语言实现二路归并排序
- 【竞赛篇-国创(大创)线上报告撰写(常用套话总结)】季度报告、中期报告、结题报告怎么写,用什么格式,附件传什么比较好
- XDOJ(智慧平台)--分配宝藏(用动态规划dp算法解决)(C语言)
- 《如何阅读一本书》读书计划
- Spark中组件Mllib的学习27之逻辑回归-多元逻辑回归,较大数据集,带预测准确度计算
- oracle的job引起数据库崩溃,JOB忽然停止工作了
- 【DBA】 Oracle 学习路线
- 2020牛客国庆集训派对day2 补题J
- 如何判断两个QQ好友之间是否为好友关系
- 艾泰转发规则虚拟服务器,艾泰HiPER 510典型配置案例详解
- Python登录大连交通大学教务在线实现成绩查询
- nexus7二代刷Linux,大饱眼福: Nexus 7二代全拆解