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("子类必须重写这个方法")

}

}

你可能感兴趣的:(final)