知识卡片
override 与 final 把重写意图变成编译期约束
内容
子类重写父类的方法/属性/下标必须显式加 override 关键字,编译器会据此检查父类里是否真的存在同名同签名的成员——如果拼写打错、参数类型对不上,或者父类那边根本没有这个成员,直接编译报错,而不是悄悄定义出一个和父类同名但毫无关系的新成员、留下一个运行时才会发现调用错误对象的隐蔽 bug。反过来,final 关键字允许在类/属性/方法/下标上声明”到此为止,不允许再被继承或重写”,把”这个实现是终态、后代不该动它”这个设计意图从代码注释升级成编译器会强制检查的约束。两个关键字合起来,让继承体系里”谁能改、谁不能改”不再依赖读代码的人自己去推断。
参考来源
《Swift全解析:新式iOS实战开发》第14章《Swift继承》