final

/*

final 关键字可以用在 class, func 或者 var 前面进行修饰,表示不允许对该内容进行继承或者重写啊哦做。

和 C# 中的 sealed 相同

一般来说,不希望被继承和重写会有以下几种情况

1,类或者方法的功能呢确实已经完备了。例如 MD5, AES 加密解密的工具类

2. 子类继承和修改是一件危险的事情。比如基类中的一个被其他方法依赖的方法,如果在子类中被重写,可能会导致基类中依赖这个方法的其他方法失效。

3,为了父类中某些代码一定会被执行,比如基类中一些关键代码在被继承重写后必须执行的,比如状态配置,认证等等,否则会导致运行时候的错误,如果子类重写了基类方法而没有调用父类的方法,就会造成问题

4,性能考虑, 提升不大

*/

// 针对第三种情况,可以这样完善。

// 这样,无论如何我们使用 method , 都可以保证需要的代码一定被执行过,而同时又给子类继承和重写自定义具体实现的机会

class Parent{

final func method(){

print("开始配置信息")

// 。。。必要的代码

methodImp1()

// 。。。必要的代码

print("结束配置")

}

func methodImp1(){

fatalError("子类必须重写这个方法")

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • final 关键字可以用在,或者前面进行修饰,表示不允许对该内容进行继承或者重写操作。这个关键字的作用和C#中的相...
    飞行的猫阅读 2,865评论 0 0
  • 原创文章&经验总结&从校招到A厂一路阳光一路沧桑 详情请戳www.codercc.com 1. final的简介 ...
    你听___阅读 12,458评论 6 22
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,329评论 18 399
  • 08.01_面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述在Java...
    苦笑男神阅读 1,522评论 0 1
  • 一元钱能拍出什么光景 心情 还是幻影 为什么 那是我的一元钱
    火山wj阅读 708评论 0 0

友情链接更多精彩内容