/*
final 关键字可以用在 class, func 或者 var 前面进行修饰,表示不允许对该内容进行继承或者重写啊哦做。
和 C# 中的 sealed 相同
一般来说,不希望被继承和重写会有以下几种情况
1,类或者方法的功能呢确实已经完备了。例如 MD5, AES 加密解密的工具类
2. 子类继承和修改是一件危险的事情。比如基类中的一个被其他方法依赖的方法,如果在子类中被重写,可能会导致基类中依赖这个方法的其他方法失效。
3,为了父类中某些代码一定会被执行,比如基类中一些关键代码在被继承重写后必须执行的,比如状态配置,认证等等,否则会导致运行时候的错误,如果子类重写了基类方法而没有调用父类的方法,就会造成问题
4,性能考虑, 提升不大
*/
// 针对第三种情况,可以这样完善。
// 这样,无论如何我们使用 method , 都可以保证需要的代码一定被执行过,而同时又给子类继承和重写自定义具体实现的机会
class Parent{
final func method(){
print("开始配置信息")
// 。。。必要的代码
methodImp1()
// 。。。必要的代码
print("结束配置")
}
func methodImp1(){
fatalError("子类必须重写这个方法")
}
}