最终类 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 修饰方法表示不希望方法被修改,可以再一个更高的维度来保证同类事务的共同表现。

相关文章
|
4月前
|
C++
【C++11特性篇】C++11中の【override】【final】关键字——帮助用户检测是否重写
【C++11特性篇】C++11中の【override】【final】关键字——帮助用户检测是否重写
|
4月前
|
Java 容器
【Java探索之旅】继承结构 继承和组合 protected final
【Java探索之旅】继承结构 继承和组合 protected final
31 0
|
Java
final 类,常量,方法的解释
final 类,常量,方法的解释
79 1
|
编译器 C++
C++11新特性探究:显式override和final
C++中,我们一般可以以基类声明纯虚函数,然后让派生类继承并重写这个虚函数,用override表示显示覆盖基类方法,但一直没有提供一种方法来阻止派生类继承基类的虚函数。
|
存储 Java 程序员
深入理解Java中的三个修饰符(抽象(abstract)、静态(static)和最终的,不可变(final))【配视频】
🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
333 0
深入理解Java中的三个修饰符(抽象(abstract)、静态(static)和最终的,不可变(final))【配视频】
|
编译器
public final static搭配的好处
final 和 static 往往搭配使用,效率更高,不会导致类加载.底层编译器做了优化处理
163 0
public final static搭配的好处
|
缓存 Java
通过JDK源码角度分析Long类详解
通过JDK源码角度分析Long类详解
通过JDK源码角度分析Long类详解
|
设计模式 安全 Java
区区final和static,竟然隐藏着这么多知识点!
这是我端午节去西湖玩的时候照的照片。那天的天气很善变,早上出门的时候是阴云密布,中午突然就变成了蓝天白云,艳阳高照,到了下午又变成倾盆大雨。 有人说,人的心情、行为等都可能受到环境影响。我不否认这个理论,但我们可以降低环境对我们的影响。天气也好,家庭出身也好,曾经的经历也好,学习、工作环境也好。这些都算是一些客观的环境因素,影响情绪的大概率不是环境本身,而是我们的态度。晴天也好,雨天也罢,你若尝试喜欢,那便是好天气。
219 0