首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面向对象 关于密封类

请用对象表述只有男人女人这个问题看起来很简单:

classHuman{}

classManextendsHuman{}

classWomanextendsHuman{}然后我们根据这个定义了一个方法

voidfn(Humanh){

if(hinstanceofMan){

Manm=(Man)h;

}else{

Womanw=(Woman)h;

}

return;

}这样世界看起来很美好,但是有一天外星人来了,人类多了一种:

classFooBarextendsHuman{}然后有人这样调用fn

fn(newFooBar());Boom!!!! 虚拟机炸了。我们再回到最初的问题:请用对象表述人只有男人和女人问题出在只有这两个字上,其实我们是想要:

一个类(Human)只有特定的子类(Man,Woman)

除了这些类外,它(Human)不能再被继承

它的子类(Man,Woman)可以被继承

这样的类被称作密封类(sealed class )相关资料:https://www.kotlincn.net/docs/reference/sealed-classes.html它可以看做是类的封装的一个枚举,是枚举类的扩展,目前C# ,Kotlin 等面向对象语言都已支持,(Java不支持(好像))。下面以Kotlin 为例:

要声明一个密封类,需要在类名前面添加修饰符。

sealedclassHuman

classMan() :Human()

classWoman() :Human()

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180424G1RET700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券