最终类 final|学习笔记

简介: 快速学习最终类 final,前面说的 PHP 是可以继承的,类是可以继承的,类有我可以继承子类,再往后类又可以继承孙子类,类可以无无限继承,现在确定一个问题,类继承的多了,代表类的重用性增加了,但是系统的解析复杂程度会增加,随之而来的是效率的降低。那如果有些类已经达到最小的程度,无法再扩展时,或者不需要继续扩展了,这个时候就要使用最终类 final。现在了解一些什么是最终类,掌握 final 关键字的最终作用和实际应用场景。

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第二阶段:最终类final】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/712/detail/12697


最终类 final


主要内容:

一、概念

二、示例


一、概念

final 关键字的概念,使用 final 关键字修饰类名,表示此类不可被继承,这个类已经不可以被扩展了,最终哪个类表示类已经到头,不要允许再作为其他类的父类,只能实例化使用,final 修饰的类叫最终类,final 还能修饰方法,表示修饰的方法不能被重写,子类继承的方法也不能被重写,不能因后面的方法改变规则,final 修饰的不管是类还是方法,都是为了保护结构不被恶意拓展或者修改,不能继承类,不能再这个类的基础上重写或者扩展。Final 修饰的类是所有方法都不能被重写,而final 被修饰的类是不能修改,其他的类是可以修改的。


二、示例

1.定义 final class 类名,就是再 class 前面加上 final

#最终类

final  class Man{}

2.表明这个类无法被继承,再用一个子类尝试继承这个类,系统会报错

class  Man18  extends Man{}

来看看具体效果

图片1.png

加上 final ,就说明 son 不能继承 man 类,不能从这里面继承,原因是 final class 类,因为他是一个最终类。是错误操作,因为 final 类不能被继承。但说明类直接被使用,需要实例化。

#错误操作:final 类不能被继承

3. #class  Son  extends Man{}

4. Final 修饰的类不能被继承,它还可以修饰方法,被修饰的类不能被重写。

final 类中没有必要再使用 final 关键字修饰方法,因为这个类根本就不能继承,所有不存在方法被重写,一般类不允许某个方法被重写,这个方法要用到三个关键字修饰,比如说第一个 public function beoverride 这是可以被重写的一个方法,final public function notbeoverride 就表示方法不能被重写,但是此时这个类是可以继承的,因为此时这个方法是可以被继承的 class woman extends human

#一般类:但是不允许某个方法被重写

Class Human{

public function beoverride(){

}

final public function notbeoverride(){

}

}

class woman extends human{

}

可以继承的,继承之后重写这个方法 public function beoverride,什么都没做直接重写也是没有问题的。

public function beoverride (){}

如果要重写 final 父类方法,就是 public function  notbeoverride。

#重写 final 方法(父类)

Public  function notbeoverride (){}

图片2.png

显示不能够重写最终方法,说明不能被重写。不能重写只能使用,是一种特点。


三、小结

最后做一个总结,final 关键字修饰的类表示无法继承,final 修饰方法表示子类不能重写,通常这个地方不会使用 final 关键字,有哪位要保证这个类能够被继承才会使用。Final 修饰类表示不希望类再出现子类,可以保护类的内部结构不被披露,可以有效控制继承链,再往下走,这个继承链不会太长,final 修饰方法表示不希望方法被修改,可以再一个更高的维度来保证同类事务的共同表现。

相关文章
|
安全 Linux Android开发
AVB源码学习(七):AVB2.0-Super动态分区介绍
AVB源码学习(七):AVB2.0-Super动态分区介绍
819 0
|
机器学习/深度学习 人工智能 自动驾驶
「AIGC」Agent AI智能体的未来:技术、伦理与经济的交汇点
Agent AI智能体融合机器学习与深度学习,推动社会效率与创新,但也引发伦理、法律及就业挑战。技术上,它们能自我优化、积累知识,如自动驾驶汽车通过学习改善驾驶。伦理上,需建立AI准则,确保透明度和责任归属,如医疗AI遵循道德原则。经济上,AI改变就业市场结构,创造新职业,如AI顾问,同时要求教育体系更新。未来,平衡技术进步与社会影响至关重要。
833 0
|
前端开发 JavaScript 网络协议
深入理解Python Web开发中的前后端分离与WebSocket实时通信技术
【7月更文挑战第18天】前后端分离采用Flask/Django框架,前端JavaScript框架如Vue.js与后端通过AJAX/Fetch通信。WebSocket提供实时双向通信,Python可借助websockets库或Flask-SocketIO实现。最佳实践包括定义清晰的接口规范,确保安全性(HTTPS,认证授权),优化性能,和健壮的错误处理。结合两者,打造高效实时应用。
275 1
|
8月前
|
存储 SQL 算法
阿里面试:每天新增100w订单,如何的分库分表?这份答案让我当场拿了offer
例如,在一个有 10 个节点的系统中,增加一个新节点,只会影响到该新节点在哈希环上相邻的部分数据,其他大部分数据仍然可以保持在原节点,大大减少了数据迁移的工作量和对系统的影响。狠狠卷,实现 “offer自由” 很容易的, 前段时间一个武汉的跟着尼恩卷了2年的小伙伴, 在极度严寒/痛苦被裁的环境下, offer拿到手软, 实现真正的 “offer自由”。在 3 - 5 年的中期阶段,随着业务的稳定发展和市场份额的进一步扩大,订单数据的增长速度可能会有所放缓,但仍然会保持在每年 20% - 30% 的水平。
阿里面试:每天新增100w订单,如何的分库分表?这份答案让我当场拿了offer
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
模型训练数据-MinerU一款Pdf转Markdown软件
MinerU是由上海人工智能实验室OpenDataLab团队开发的开源智能数据提取工具,专长于复杂PDF文档的高效解析与提取。它能够将含有图片、公式、表格等多模态内容的PDF文档转化为Markdown格式,同时支持从网页和电子书中提取内容,显著提升了AI语料准备的效率。MinerU具备高精度的PDF模型解析工具链,能自动识别乱码,保留文档结构,并将公式转换为LaTeX格式,广泛适用于学术、财务、法律等领域。
1383 4
|
安全 Ubuntu Linux
Linux系统无法启动或启动过程中卡住
【10月更文挑战第5天】
1723 3
|
人工智能 大数据 区块链
|
12月前
|
NoSQL 安全 Shell
MongoDB 用户管理
10月更文挑战第12天
348 0
|
人工智能 运维 Prometheus
运维之巅:构建高效自动化运维体系的实战指南
在信息技术飞速发展的今天,企业对IT系统的依赖程度不断加深。如何确保这些复杂系统的稳定性与可靠性,是每一个运维人员面临的挑战。本文将深入探讨构建一个高效自动化运维体系的关键要素,包括工具选择、流程优化、监控告警以及故障响应机制等。通过具体实例和数据分析,揭示自动化运维对企业效率和稳定性的积极影响,并提出一系列可行的实施建议。
285 0
|
边缘计算 运维 安全
云上物联网边缘节点:重塑连接智能世界的桥梁
结语 云上物联网边缘节点作为物联网技术的重要组成部分,正以其独特的优势和潜力推动着物联网的快速发展。面对未来的机遇和挑战,我们需要不断创新和完善边缘节点的技术架构和应用模式,推动物联网技术的深度融合和广泛应用,为构建智慧社会贡献力量。
365 0