sealed 关键字1、基本介绍sealed 用来定义密封类作用是限制子类的类型把类声明为 sealed它的子类只能定义在同一个文件里相当于告诉编译器可能的子类就这几种不会再有别的配合 when 表达式可以不用写 else因为编译器知道所有可能的情况维度使用 sealed 关键字不使用 sealed 关键字子类位置只能在同一个文件任意地方when 表达式可以省略 else需要 else扩展性子类集合固定外部不能新增外部可以随意新增2、演示使用 sealed 关键字sealedclassResultdataclassSuccess(valdata:String):Result()dataclassError(valmsg:String):Result()objectLoading:Result()funhandle(result:Result)when(result){isSuccess-println(数据${result.data})isError-println(错误${result.msg})Loading-println(加载中)}不使用 sealed 关键字openclassResultdataclassSuccess(valdata:String):Result()dataclassError(valmsg:String):Result()objectLoading:Result()funhandle(result:Result)when(result){isSuccess-println(数据${result.data})isError-println(错误${result.msg})Loading-println(加载中)else-println(未知)}不使用 sealed 关键字如果不写 else会编译失败openclassResultdataclassSuccess(valdata:String):Result()dataclassError(valmsg:String):Result()objectLoading:Result()funhandle(result:Result)when(result){isSuccess-println(数据${result.data})isError-println(错误${result.msg})Loading-println(加载中)}# 输出结果 when expression must be exhaustive. Add an else branch.