【Kotlin】枚举和印章类

news/2024/5/19 0:48:00 标签: 枚举, 印章类

印章类

印章类又称为密封类,用来表示受限的类继承结构:当一个值为有限几种的类型, 而不能有任何其他类型时。使用sealed关键字修饰类,印章类可以有子类,但是所有的子类都必须要内嵌在印章类

现有母驴、公驴、公马三只动物
母驴+公驴=驴子
母驴+公马=骡子

我们创建一个Son class来形容三只动物的儿子,由于只能是驴子,或骡子,所以我们加关键字sealed

fun main(args: Array<String>) {
	var son1:Son = Son.donkey()
	var son2:Son = Son.mule()
	var son3:Son = Son.donkey()
	
	var list = listOf<Son>(son1,son2,son3)
	for(s in list){
		if(s is Son.donkey){
			s.sayHello()
		}
	}
	
}

不能直接实例Son的,因为它有关键字sealed,没有构造方法,所以这样写会报错
在这里插入图片描述
查看运行结果
在这里插入图片描述

枚举

enum class Week{
	星期一,星期二,星期三,星期四,星期五,星期六,星期天
}

fun main(args:Array<String>){
	println(Week.星期一.ordinal)
	println(Week.星期天.ordinal)
}

在这里插入图片描述

两者区别

在这里插入图片描述


http://www.niftyadmin.cn/n/1817190.html

相关文章

剑指offer 13. 机器人的运动范围

剑指 Offer 13. 机器人的运动范围 - 力扣&#xff08;LeetCode&#xff09; (leetcode-cn.com) class Solution {int m, n, k;vector<vector<bool>> not_visited; public:int movingCount(int M, int N, int K) {m M; n N; k K;not_visited vector<vector…

神奇的等式(大贤者福尔)

目录 题干 题面描述 输入 输出 示例输入 示例输出 思路 代码&#xff08;含注释&#xff09; 运行结果 题干 题面描述 大贤者福尔在研究数学问题时&#xff0c;发现有一些自然数能够构成一个形如下式的等式&#xff0c;颇为神奇。 (x0 * x1 * x2 * x3 * x4) / (x5 …

乘积(大贤者福尔)

目录 题干 题面描述 输入 输出 示例输入 示例输出 分析 代码 运行结果 题干 题面描述 大贤者福尔的数学研究成绩斐然&#xff0c;影响力越来越大&#xff0c;也有很多人向他请教。最近&#xff0c;有人咨询他一个问题。给定若干个整数S {S1, S2, ..., Sn}&#xff…

剑指offer 14 - I. 剪绳子(贪心,DP)

剑指 Offer 14- I. 剪绳子 - 力扣&#xff08;LeetCode&#xff09; (leetcode-cn.com) 目录 贪心 运行结果 代码 分析 把【长度>4】的绳子任意切成【长度>1】两段&#xff0c;那么这两段长度之积一定不小于原长度。 对于任意一段长度超过4的绳子&#xff0c;我们均…

剑指offer 14-II. 剪绳子 II(大数求余问题)

剑指 Offer 14- II. 剪绳子 II - 力扣&#xff08;LeetCode&#xff09; (leetcode-cn.com) 本题只是在 "剪绳子 I" 的基础上增大了数据&#xff0c;因此我们只需要另外处理大数求余问题即可。 剪绳子I的题解&#xff1a; 剑指offer 14 - I. 剪绳子&#xff08;贪…

【达内课程】Parcelable和Serializable

文章目录SerializableParcelableSerializable Serializable实现序列化的接口 例如&#xff1a; 只要实现这个接口&#xff0c;系统会自动完成序列化&#xff0c;效率较低 public class Music implements Serializable{public String title;public String artist;public int…

【Kotlin】高阶函数

文章目录函数式编程举个栗子&#xff1a;forEach传统写法的缺点高阶函数maxBy、minByfiltermapanycountfindgroupByDSL扩展函数函数式编程 举个栗子&#xff1a;forEach var print fun (name:String):Unit{println(name) }fun main(args: Array<String>) {var names l…

【Kotlin】图片处理

课前知识 了解了以上基础知识&#xff0c;我们来创建一个图片 import java.awt.image.BufferedImage import javax.imageio.ImageIO import java.io.Filefun main(args: Array<String>) {//宽度、高度、图片的类型//内存中创建一个宽高都为100的图片var image Buff…