00:00
好,那咱们下午的话呢,就接着来讲啊,那个我们下边的内容呢,叫枚举类啊,然后在下边这个呢,叫做注解,诶这两个的话呢,内容相对来说啊,不是特别难,然后我们就先来看第一个啊,这个呢叫枚举,或者呢也称为呢叫枚举类。好,那么首先的话呢,我们就会关心到底什么叫枚举类,来我们先看一下这个PPT啊,看下我们这个课件。哎,这里边儿提到啊,说枚举类型本质上呢,也是一种类,诶只不过呢,这个类的对象是有限的,固定的几个,不能让用户呢随意的创建。哎,这个呢,你看明确的是说到这个对象啊,也就是说呢,当一个类的这个对象是确定的几个。啊,这个时候的话,我们这个类呢,就可以称为叫枚举类了。哎,比如说那下边呢,举的这个例子啊,这个星期如果说我们有一个类呢,叫做星期的话呢,那么星期的这个对象对应的就是星期一星期二啊,一直到星期天,这一共呢,有七个对象。那如果性别是一个类的话呢,男女。
01:00
啊。然后还有其他的可能再有几个是吧,当然呢,总归呢,也是就确定了几个啊,这个呢,属于性别的这个类的实例啊,对象月份月份如果是个类,那一共呢,就是12个对象,那季节同样如此,三原色RGB啊,就我们现在看到这个,那颜色的话呢,其实呢,可以使用三个颜色呢,给它这个。这个叫什么,拼凑出来是吧,RGB啊,二呢,就是红色绿色蓝色叫三原色啊。OK,嗯,这是它,然后呢,这个支付方式这块呢,就是可以涉及到我们相应的这个代码层面了,比如我们这个写一个电商啊,这个电商的话呢,用户呢,在支付的时候呢,可以做一个选择,使用现金,微信支付宝,银联还是信用卡,这个呢,我们就理解成了是支付方式这个类的相应的几个对象。就职的状态,目前呢,你是处于这个忙碌的状态,还是呢,刚做完这个项目啊,有一定的这个空闲时间,叫福利状态,还是呢,属于在休假,还是说呢,被离职了。啊,这个呢,就属于这个就职的状态啊,订单的状态啊,这个呢,也是跟我们这个比如说电商相关的啊这样的一些情况,然后线程的状态,哎这块就提到了,我们讲TH线程的时候呢,会涉及到它有几个情况,是刚创建还是呢,创建成功了,但是还没有运行,这叫就绪状态,还是正在运行,还是已经阻塞了,还是呢死亡了。
02:17
哎,所有的这些呢,其实大家都可以理解成了属于这个叫霉菌类了。所以呢,关于这个枚举类的话呢,不是特别难理解啊,那回过来这儿呢,我们就提到了,首先第一个问题,关于它的一个理解的事儿,哎,举例的话呢,像我们刚才说的这些呢,都可以理解成是枚举类的这个具体的实例了。啊,具体的这种场景。OK啊好,那么我们这里边儿呢,要讲的是枚举类,它对于我们开发当中的建议是什么呢?啊建议呢,就是说如果说呢,我们在实际开发当中。这块我好像没有写是吧,好,就是我们在这个实际开发当中啊,如果呢,我们某一个类的这个对象啊,就是确定了几个。那么这时候呢,我们就推荐大家呢,使用霉菌内呢来进行表示。哎,我在这写下啊。
03:02
这个开发中。哎说哎,如果哎针对于哎某个类啊,其实例是确定个数的。啊,那么则推荐呢,将此类。哎,声明为。哎,叫枚举类。啊举个例子啊,你比如说我们在就在我们就在这个电商里边呢,需要指明这个支付方式了啊那么这个时候的话呢,我们说有这样的一些方式,这个呢理解成就是支付方式这个类的实例了,这个实例呢就这几个,也不要让用户呢再去这个类的外面呢,再创建新的对象了,那不妨呢,我们把这个类呢,就想办法把它设成是一个媒体类的这样一个特点。包括呢,像这个比如说就职的状态,那员工呢,有个属性呢,叫做status,就是他就职的一个状态,他这个状态的话呢,就是这几个选项,那就让用户呢,从这几个选项里边去选择就可以了。
04:00
啊,那么再换一个场景呢,比如说咱们在这个移动端来看吧,移动端的时候呢,有时候我们会看到有这种叫单选框是吧。哎,从这几个里边呢,大家选一个在这个单选框的话呢,这不就是这几种情况嘛,从这里边你选一个就可以了,然后这个时候呢,其实也可以呢,考虑把这个单选框呢,你设置成是个类,这里边几个选项呢,就看到这个类的一个实例了,包括这个下拉框也是一样啊一点这有个下拉框。啊,这里边儿你选择一个具体的这个呢,下拉框对应的这些项呢,比如说是省份吧。啊这呢一共是好多的这个省,那我们可以把这个省份呢,设置成是一个类,那么每一个具体的省呢,就看到是这个类的一些具体的实例了,那么像这些场景呢,我们都可以呢,把对应的类呢,设置成是这个枚举类。哎,就是这个意思啊好,那么枚举类呢,这块我们提到说它的这个实例的个数,也就是对象的个数呢,是确定啊多个的。啊,其实力是确定个数的,那么如果这个实例呢,就只有一个了。哎,任务发现这个枚举例呢,就一个对象。
05:00
那其实呢,我们说枚举类呢,也是单例的一种实现方式。啊,这我们写上说,如果枚举类的这个实例啊,只有一个啊则啊可以看作。哎,看作是诶单立的这种,哎实现方式。所以说呢,我们通过这个枚举类呢,也可以啊,来这个实现这种单例啊,OK啊这块我们就基本上把这个概念呢,首先说清楚了,然后下边呢,就涉及到了我们该如何呢去定义霉菌类呢?诶咱们这块呢,讲两种方式,一种的话呢,就是我们在GDP5.0之前,也就是说呢,从GD1.0开始,我们自己呢,得手动的去定义这种霉菌类,就通过class的方式去定义这个酶菌类了,然后在5.0的时候呢,多了一个关键字啊,这个呢。啊,念成叫innu或者叫an这个。都可以啊,英音和美金不一样,那我们用这个关键字呢,可以去定义枚举类了,这种定义的话呢,就会更方便一些,所以呢,咱们这块讲枚举类呢,也就是大家需要关注一下该如何去定义枚菌类。
06:01
顺带呢,就是这个方式定义的话呢,有一些常见的方法,我们把这个方法呢,常见的几个呢,说一下,其实也就可以了。所以呢,这个枚举类这块的内容啊,不多啊。好,那咱们就开始来讲解啊,如何呢,去自定义美菌类,好,那我们在这个下边呢,就去新建一个啊,这个呢,我们就从上面挑一个吧。嗯,也别挑,也别挑这个太多的,嗯,少的呢,有点少,选一个季节吧。四个是吧,OK。好,那这块我们就新建一个啊,这个我们叫做。哎,Season是吧,哎,这个测试的话呢,我我就写到里边了啊。好在下边的话呢,我们去定义这个霉菌类。哎,Season。OK啊好,那这时候呢,我说呀,我把这个C呢,把它就定义成是酶菌类。哎,相当于呢,这就是JDK5.0啊之前的这种实现方式啊。啊,之前的。定义啊,枚举类的的方式。
07:02
好,那么这块我们要考虑呢,如何去实现,首先的话呢,我们提到了这个类的对象的个数是有限额的啊,就这几个,你不能再无故的去增加了。哎,其实这块呢,我们跟单利一样,首先要处理的是不是还是构造器的问题啊。这个构造器呢,如果是对外暴露了,我们可以在类的外部是不是随意就可以创建对象了,那显然呢,这个枚举类呢,这个个数呢,这就。不确定了是吧,哎,所以呢,我们要做的第一个事儿呢,是不是仍然要限制它的构造器啊。诶,这个呢,仍然叫做诶私有化啊类的构造器。那这块我们就一下。Season啊,诶就这么着了啊好,那么前面我们讲单利的时候呢,针对于那个单利的,我们叫银行bank,没有提供任何关于对象的一些这个实例变量了啊,咱们在这里边儿呢,给大家去提供一下什么意思啊,就是比如说我们这个季节的话呢,回头在这要造四个对象,每一个季节对象呢,它都有两啊有一个或两个这种实例的变量了,哎,我们在这就可以声明一下啊。
08:01
相当于叫声明,哎,当前。啊类的对象的实例变量。诶,比如说啊,我们针对于每一个对象的话呢,它都有一个比如叫季节的名称。哎,我们称为它叫season。再来一个string类型的,比如说关于季节的一个描述。啊,Description啊,我就简写了啊叫de。这叫季节的描述啊,叫季节的名称啊,就这样好,那么这时候的话呢,我们考虑呢,给它也加上一些修饰啊,比如说呢,我们对象呢,在里边造,造的同时呢,就把这些属性呢,给它附上值了,附上值的时候呢,我们可以对外呢。啊,只让他进行一个,呃。获取不让他进行修改了,而且呢,这个获取的话呢,我们通过方法来做,所以呢,自然而然的我就把它首先私有化。哎,刚才我提到了哈,只让他获取,不让他去修改。
09:00
Final一下。啊,这是一个啊好,这个呢,也同样的道理。这个呢,还能加。千万不要加啊,加上这个呢,是不是成了我们春夏秋冬四个季节对象,每一个都共用了。呃,显然呢,这个不能共用啊,所以不要加这个磁带这个啊好,这样声明完以后的话呢,因为是final的嘛,那对应的话呢,我们得在相应的要么显示初始化,要么构造器,要么代码块得给它赋值了,所以这儿呢,我们选择呢,是在这个构造器当中啊,做一个这个初始化了。哎,逗号一下。还有这个是吧,CTRLCCTRLV这样。哎,这个呢叫see。啊,C的D啊。哎,D,哎,这就可以了。好,那这个的话呢,我们比如看成第一步啊,私有化类的构造器,第二步的话呢,如果你针对于当前这个类的多个实例,要是有这种实例变量的话呢,你就给他声明一下,这块一定要注意它的修饰啊。
10:03
还是这个。好了,这是第二步了,那第三步的话呢,既然呢,你提供了这样的属性了,我们私有化了,如果你要是外部想看一看具体对象的这个值的话呢,我们就给他提供相应的概方法。来提供这个实例变量的。Get这个方法啊,好这块呢,我们也是out加insert。这个时候你看我们在调的时候呢,它只有一个盖茨。没有get and是吧,因为呢,我们这是final,所以你就不可能对它进行设置了。啊,只有这个get方法行,这呢,就我们说的这个算是第三个操作好,这些呢,都准备好以后呢,终于我们可以在类的内部来创建对象了啊。哎,创建当前类的实例。好,这呢,就我们所说的枚举类呢这几个对象了,就这个对象的话呢,我们就直接呢,先声明叫season啊,然后名字的话呢,比如说这个叫呃春天叫spring是吧。
11:01
哎,又一个season。在这儿呢,我们去调这个构造器啊,这个叫春天。哎,春天的一个描述呢。比如,哎,对,春暖花开。春。诶,春暖花开OK啊,这个呢是其中的一个了,那我们这儿呢,一共有四个对象嘛,CTRLD。哎,来试一下啊呃,春天夏天。Summer。夏天的描述呢?夏日炎炎。然后秋天。Autumn是吧?哎,秋天啊,这个。秋高气爽啊,大家这个词呢,都出奇的一致是吧?词汇量都不多啊。哎,冬天。
12:01
Winter啊。哎,冬天是吧,这个偏南方的话,那个冬天不下雪是吧,这个在北方的话,一下雪这个比较有氛围啊。啊,这这个白雪,哎是吧,就确实呢,一下雪的话呢,就感觉这种浪漫气氛立马就上来了啊。啊,没见过雪的可以到北方来感受感受啊。好,这个呢,就是春夏秋冬,哎这四个对象呢,我就创建好了,那创建好以后呢,诶接着下一个问题哈,我们这几个对象呢,哎在内的外部呢,可以去使用。可以使用啊,但是呢,你不能修改。这个使用的话呢,干脆呢,我们说呢,你就直接调就得了,没有必要呢再通过方法了,DG呢,就是我们就不去提供这个get的方法了。那就意味着你就直接是不是就public了。没问题吧?哎,理解吧。得得清楚啊,我现在直接在类的外部就来调了,我就不提供你这个对象的get方法了,所以我就public了,没问题吧。
13:05
没问题,好,然后呢,这儿呢,咱们说呢,其实是你当年那个对象了,在外边钓的话呢,是不是就直接掉拿谁钓呢。是不是得拿泪去掉啊?你要现在来看的话呢,这呢不是静态的拿对象屌,我这就是个对象。我目的就想拿到它,你现在让我还拿它去钓,那我。这不又成了一个悖论了吗?所以呢,这时候这个对象呢,还得加一个。是吧?直接呢,在类的外部呢,我们通过这个,哎在这儿你看现在呢,已经能够实现这样的特点啊,我see点一下这个spring,你看是不是就能掉了。现在不就拿到这个对象了吗?是吧,好,还有一个问题啊,这个对象呢,你可以用,但你不能改。怎么算改呢,你说这块你有一个我也看不到你的构造器啊,诶这倒确实是,但是呢,你有可能给我整成no啊。是吧,不能调构造器,但是呢,每一个对象不都默认值是个no吗?这样负也不行,所以呢,不让他改怎么办?
14:00
是不是再翻一下。就这么着。哎,这儿呢,就要求我们这几个对象哈,都得是这样来去修饰。哎,就得这么着了。好,这样修饰完了以后呢,这就是全局常量了,其实这块我们应该把它写成个大写,是不是要合适一点是吧。Summer。An autumn。诶winter啊,诶这样的形式,诶那要是从常链的角度来讲呢,其实上面这两个呢,我们也设置成是这个大写的也可以是吧,这块我就暂时就先不改了啊好,那么这样完了以后呢,你回过来你这块呢,去调一下这个spring是吧,这时候你再去给他改一个值,这就不靠谱了。啊,这就不行了,好了,这个呢,我们把它呢注释掉,那么关于呢,5.0之前定义每几类呢,其实就这样写。啊,就这样写就可以了,最后呢,比如说你要愿意的话呢,我们再给他提供一个to string方法是吧,方便呢,我们再调这个对象的时候呢,看一看它相应的这个属性的这个值,哎,就OK了。
15:01
好,完事了。啊,所以这块呢,大家一定要注意的就是我们声明的这个实例变量呢,这块提到了啊,它呢需要去使用。这个呢叫private final来进行一个修饰,而对于我们这个创建的一个实例呢,需要呢。哎,使用叫public static final来修饰。啊,这个不是说呢,大家硬性的去记啊,你看我刚才讲的时候呢,为什么这样去做,刚才其实都解释了啊好,那这个类呢,就设计完了,这叫做媒菌类啊,我们可以呢,稍微的演示一下使用,比如在相应的位置呢,我们想调一下啊,这个春天这样的一个对象,直接呢就调这个spring就可以了。我们直接可以打印,相当于就调他的这个图死针方法。哎,我们这块呢执行,哎这不就出来了吗。啊,现在呢,你说我们针对这里边这个具体的对象,哎,我调一个,比如说夏天啊,调它get了一个season的内幕啊,这也是OK的啊,再复制一份。来get一个season的D是吧,这都没问题啊,Run一下。
16:04
那这都可以啊。行,那么关于5.0,诶之前的这种定义方式呢,就说完了。就这样写。OK啊诶就大家呢,稍微的熟悉熟悉就行好,那么关于5.0之前的这种定义方式呢,咱们就说完了,说完之后的话呢,咱们接着来看一看,在5.0当中说呢,可以使用叫innu或者叫an这样一个关键字呢来定义啊,你看这块我右键new的时候呢,在这块呢,你看有一个叫它是吧,这个呢,就是我们说的这个枚举类的一个意思了啊好,那这块我们仍然呢叫做这个season。哎,关于他了啊,其实这块我还想这样来讲一下吧。我我我先这么着啊,我先写上这个test叫一了。那这块呢,就是它自动给我生成的哈,我还能把它生叫成这个叫class了哈,我在下边儿呢,这样自己主动的去写一下。哎,就是这个意思。啊,这么着啊。好来这块看一下这儿呢,我们就直接呢,使用这个叫A这样一个关键字来进行定义了。
17:00
哎,这个是JDK5.0中。来使用。哎,这个关键字。来定义这个枚举类,OK,那既然呢,你给了一种新的方式,那这种方式呢,肯定比以前呢要更方便一些了啊,那这个能方便到哪儿呢?来我们这样来体会啊,这儿呢是咱们自己定义的方式,我把这个呢完全不动的。CTRLC咱们粘过来。哎,CTRLV粘过来以后的话呢,我们看哪些地方呢,需要做修改,通过这个修改的话呢,我们能直更直接的能看到这样一个特点啊好,首先粘过来的时候呢,这块有个问题,就是说我们原来那个叫C1是吧。哎,咱们这块呢,先把这个名呢,我先给人家改一下啊。你看这个呢,也叫SEASON1吧。看看其他位置。这个位置改一下。可以了是吧,好,那这块改完以后的话,你发现他仍然是报错的,那通过这一块呢,报错的信息,诶咱们给大家说一下呢,应该怎么去写哈,这个对于A这个关键字来定义枚举类的话呢,它有要求,就是你一上来呢,就必须把这个对象呢先放到这儿,所以说这块呢,我们创建对象呢,这是写到这儿了吗?需要呢,你把这几个呢,CTRLX拿走啊,上来呢就得放到开头。
18:19
哎,这样啊,这呢,一下子报的错更多了。啊,那这块的话呢,我们说呢,得做一个调整啊,调整什么呢?诶大家呢,去想一下我们讲的接口啊,接口里边呢,我们传统的讲是有抽象方法,抽象方法的时候呢,都声明为呢叫public abstract了,哎当时呢说这两个呢可以省略。当然你写上也行哈,诶这个呢,是有一个推断在这儿了,而对于这个枚举类来讲的话呢,诶,我们要求枚举类的对象呢,它都是这样的声明的。既然都是这个声明的呢,我们就可以把这个相同的内容啊给去掉,这个去掉呢,不是说你可以去了,是一定要去的。那既然这个去了,你声明的这个对象呢,也是一个C1这个类型的,那是不是也能去。
19:00
哎,其实呢,就相当于大家,你看这有四个对象长得一样的地儿呢,你都可以去啊,所以从前往后走,是不是就上到这儿了。对象名不一样,所以对象名不要删啊,这就删了,后边的话呢,New new也一样,也可以去。哎,同学说这个小括号也一样。小括号一样了,这个双引号也一样,这就别去了,再去有点就过分了是吧?天也一样,那就那就更过分了是吧,哎,所以呢,你就从这就去到这儿哈。在对象名这块后边这块呢,你看就到这啊。哎,再接着,哎,这个到这儿。哎,这个呢,到这儿啊。这个为啥小括号这个不能去呢?因为里边的两个变量这个呢是相当于行参,所以呢13赋值的啊,所以还是要扩一下的。哎,这块也是到这儿。这块new的呢,肯定都是你这个具体的类的了啊,够到气了,所以这块也都可以去,好这块已经很像了哈,哎,再一个细节呢,就是多个对象之间呢,用逗号隔开。
20:01
诶,你看没事了。哎,这呢,其实可以理解成是我们的,咱看成是叫第一个点吧,是吧,哎必须哎在这个枚举类。开头啊,声明多个对象。哎,然后呢,对象之间使用逗号隔开。有英文格式下的啊。这样就行。好,那至于说呢,你这个对象呢,我们用的构造器呢,该有还得有。是不是构造期还在这儿呢,构造期呢,你对应的有这个每个对象有这个实例变量了啊,实力变了,你该声明还去声明,哎,这个我们如果看成第二的话呢,这个就看成是第三个吧。然后盖方法需要有,你还可以有。哎,就这样就可以了,然后这个to string的话呢,诶这块呢,是一个重写,这个咱们原来在season test这里边的时候,我们这个重写的,你看我一点是不是点到object了。没问题哈,然后回到这块的话呢,我们去点一下呢。哎,你看这是我就点到这个类里了啊。
21:02
哎,为什么点到这了呢,其实这块就涉及到了我们当前的这种写法的时候呢,它其实有一个默认的负类的问题了。这个咱们等一下再说哈,这块我先怎么着呢,先把这个呢,咱们暂且先给它注释一下啊,先不去重写它了。好,那么这块呢,这不是有1234这样的几个步骤,大家就可以列成,这就是我们使用啊I这个关键字定义的这个方式。哎,稍微有点特别的,就是开头这块呢,大家多关注一下啊好,那么这个呢,定义完了,诶这个回到我们这个课件这块。笔记这块啊,来看一看,说5.0当中这个方式啊,还有这个5.0之前和5.0当中这个方式呢,我们就写完了啊,咱就直接呢叫见。代码是吧。哎,这就完事了啊好,然后呢,我们是使用这个叫艾关键字呢,定义这个每一类,然后这块呢就提到了,嗯,我这呢是一个大写的一哈。说这个呢,跟它是什么关系呢,这个刚才我们也稍微说了一下啊,我们这儿呢,叫西一。
22:03
这个类它有一个默认的负类。哎,它的负类呢,就是我们刚才看到的,哎,咱们一点点过去的这个类。来证明的话呢,其实也很简单啊,你看回过来。这儿呢,我们写一个酶方法。哎,比如说啊,我这呢,首先拿一个SEASON1,咱们呢点一下,这不就是春天嘛,是吧,哎,我呢去get一个class,这就获取你的当前所属的类,这个类呢,是不是就是C1了。来,我们run一下。诶,你看这时候就C1这没问题啊好,然后呢,我再诶复制一下在这块呢,我们再去get它的一个叫super class。就获取是他的负类,然后再去做一个执行。好大家看,那这时候的话呢,我们看到这个负类呢,就叫做这个了。呃,也就是说呢,我们当前这个类呢,它有一个默认的父类啊,这个父类呢,就是它,那是不是意味着我这块如果再想去继承一个类的话呢,哪怕说object这个事儿呢,就不太对了。
23:07
啊,那他就报错了。就相当于呢,对于我们这个,呃,它用这个关键字来定义这个枚举类的话呢,它默认的父类已经确定好了,你不要呢,再让他去继承其他的类了。哎,所以这块呢,大家要小心一点啊。好,具体是这样了,那么这个类呢,叫做它的父类呢。嗯,这个其实已经没必要研究了,但是你这块你要感兴趣的话呢,你就再去get一个super是吧,那还可以再去点。然后我们这会儿再去做一个执行。哎,看到了object。哎,所以呢,这就这个继承数的这个关系呢,我们就比较清楚了,就啊好那么回过来,哎,我们这呢想说的点哈,首先呢,第一个问题。哎,使用。啊,关键字定义的枚举类默认。啊,其父类是哎扎洼点浪包下的啊这样的一个类。
24:02
哎,是他是吧,这个呢是我们说的这个问题,但由于呢,它已经有默认的类了,这块还有个要求哈,就是使用这个in或者I关键字定义的这个酶菌类呢,大家不要显示的去声明其负类啊。啊,不要再。啊,显示的。啊,定义其父类啊,否则报错。哎,刚才我们不是试着也去写一下嘛,这个就不行啊好,那既然呢,它是继承于这个叫animal这个类了,这个父类当中啊,它就提供了一些方法。所以我们下边就稍微的熟悉一下它里边的方法呢,诶都有哪些啊,这会儿我们就做一个熟悉就行。常用的。哎,这个方法就可以了,好,那这个方法的话呢,我们直接来看一下这个课件啊。我们就找到,哎,下边这块呢,叫常用的方法,这块呢列了几个,哎,CTRLC一下,咱们把这几个呢,就稍微的拿过来,哎,咱们熟悉熟悉就行。
25:04
这个有点长哈。这个还得往后再放一放。好,首先来看第一个啊,第一个呢就叫做toth。那也就是说呢,我们刚才回过来啊,我把这个下边这个可以的还给阻止掉了啊,就是你可以不重写了,那这块我们看看它默认的一个效果是什么样子的,诶上面这仨呢,我们做一个了解就行啊,就先关掉了,哎,下边咱们来去测试方法啊。诶测试方法呢,首先第一个呢,我们看下这个叫诶to string。哎,那也非常简单哈,我们通过这个SEASON1哎点哎,就拿春天来说吧,这个呢,我们直接打印这块默认呢,就掉它的to string了。好,Run一下。好,这时候你发现它默认的打印的其实就是你当前这个对象的名。哎,就是对象名啊,这个你随便呢,再复制一份都是如此啊秋天。啊,这个在运行。哎,就他啊,所以默认的打的就是这个对象名,那如果你要不想让它显示这个呢,那你就自己呢去重写。
26:04
这个是没问题的哈,比如我把这个呢给它删掉了是吧,然后我们再alt加insert这块,还有这个to,还把这个对象的两个实例变量给写一下啊,也是没问题啊,写完以后的话,你再去run。哎,那这个自然而然的就是你自己重写以后的了。所以这个呢,很好理解啊,好这呢,我们就说完它了,然后呢,说完它以后呢,顺带着哈,我们就先说一下这个方法吧,这个叫name啊。对应到我们这儿呢,就是提到的它它呢打印的也是我们这个常链的名称啊,所以回过来这块呢,我们比如说把诶这个啊CTRLC一下粘过来,通过它呢,我们再去调这个name的方法,诶我们做一个执行。哎,就是出来他。诶相当于呢,就是大家要没有重写to string的时候呢,打印的其实就是这个名,你要重写了,那你自己想怎么写就怎么写哈,然后这个name的话呢,就是打你当前这个对象的名称。这是我们说的第二个。哎,第三个第三的话呢,我们说一下这个叫哎values,哎,先说这个方法吧。
27:04
好,这个我们看看什么意思啊,哎这呢我们就使用这叫SEASON1,这个呢去调这个叫value,哎,显然的话呢,它属于一个静态方法。这个方法的话呢,它的返回值呢,是一个数组。啊叫Y64行就它啊这个数组呢,就是C减一这个类型的。啊,那么大家你猜一下这个方法是什么意思。有几个有几个放到数组里了,而且还是就是C1这个类型的。哎,实际上呢,就把我们当前的枚举类的所有的对象啊。是不是都取出来了。哎,就放到这里边了啊,哎就这个意思,所以呢,我通过一个for循环的话呢,你可以稍微的看一下啊。打印一下我们这个Y60I。你看它是吧,诶其实呢,就把我们这个枚举类的所有的对象都放在这个数组里啊,打印的话呢,这不就叫图轮方法吗。走一下。哎,这不就出来了。这四个是吧。
28:01
哎,没问题啊,行这块清楚是吧。哎,这是呢,他的一个方法啊,就是你想看看这个枚举类到底有几个对象,分别是哪几个啊,就调这个方法就行啊。好,下边这块呢,有一个叫Y6恶啊,这呢你写一个死顿类型的。啊,这个我们称为呢,叫你现在的这个对象的一个名称。哎,你看这是什么意思啊,嗯,比如这块呢,我就试图呢,拿这个叫season一点啊,我去调这个叫Y625里边儿呢,需要我传一个字符串啊,那我就提前在这块传一下啊,磁针形的叫name。这个name呢,我写成啊,比如这个冬天吧。哎,我就这样粘过来了啊,然后呢,我把这个足串呢放到这儿。哎,接着呢,Alt enter自动的给我生成一个返回值,行就叫CZ1吧,我们去打印一下这个C1。这个大家你看这几行代码能猜出来它的作用吗?呃,就是根据呢,你传进来的一个字符串,我呢就找到你在这个枚举类当中叫这个名的。
29:04
这个枚举类的对象。啊,你不是有一个叫winter的这样一个名的一个对象吗?诶根据字符串呢,找到这个枚举类的对象来走一下。哎,你看这块这个冬天这不就找到了吗。那就可以了啊好,那接着你看我变一下啊,那如果这个obj这个name的话呢,一不小心呢,我写winter的时候呢,写错了啊。写成这个啊,叫一吧。好,写错了,显然呢,我们在当前这个枚举类当中没有这个名的对象了,那我们再去找或者什么样呢?可能我们的感觉呢,说那就找不到,那不就是个闹吗。哎,但是上呢,他不是闹。他就直接呢,就报错了。诶,在me方法里边是吧,我们调到这里边叫value o第40行。诶第四第四啊这个呢,它这个没呈现这个方法了啊,实际上是叫我们这个Adam这个类里边的这个Y6O这个方法了,是吧,调到这儿了,在这的话呢,这不就报了一个异常,所以呢,我们当年枚菌类里边没有叫这个名的。
30:03
啊,其实也很好理解啊,说非法的参数的异常。啊行这块呢,我们稍微的在这儿写一下啊。啊,在这儿说呢,呃,在这个返回。当前啊,枚举类中啊,名称。为啊叫O。啊的枚举类对象。这样的是吧,那如果呢。哎,如果枚举类中不存在啊OB。这个名称的对象啊,则报错。哎,就这样的情况啊,行这块呢,我们稍微的关注一下这个事儿就可以了。好,这个呢1234啊,这个呢有四个方法啦,然后这块呢,还有一个方法啊,这个叫啊他是吧。Ainno啊,这个ano是什么意思呢?就返回当前枚举类常链那个次序号,诶默认呢,是从零开始的。
31:06
啊,这个是呃,非静态的一个方法,所以呢,你得拿对象呢去调啊好这块我回过来,这个就给大家稍微演示一下就行,这个方法呢,一般不常用。哎,就他啊。嗯,这个呢,它不是静态的检查对象调了,比如说我拿这个秋天来调,那就这块呢,我们首先啊SEASON1。DR,我去拿到这个秋天,然后呢再去调这个叫ano是吧,那我们去打印一下啊,这个呢,就打印出来你这个对象在当前这个枚举类当中,它是第几个声明的对象了。显然是第三个吧。哎,所以这块它返回的就是个二。对,就是它的角标的意思了啊,其实你可以理解成呢,就是它呢是零。一然后二三,哎,就这个意思啊。行,这个呢,所以用的比较少啊,一般呢,我们也不会用它,哎了解一下就可以了,好那么这样的话呢,咱们就把12345哎这五个方法呢,就给大家呢。
32:01
说了一下啊,稍微带大家关注一下的话呢,就是这里边儿这个values和value of啊一个呢,就是看看你到底有多少个,哎,分别呢是哪些。啊,酶菌类的对象,第二呢,就是根据指定的名呢,去找到这个酶菌类的对象,这两个方法大家多少关注一下那就可以了啊。这块我在这额外的标识一下吧,这个关注。这就行了啊,这个呢,就是我们说的这个常用的方法。啊,其实也还好是吧。嗯,这个完了以后呢,接下来我们再考虑一下,说让这个枚举类去实现接口的一个操作了。说这呢有啥难的呀,哎,确实这个的第一种情况呢,也没什么难的。什么意思啊,比如说哎,针对咱们刚才呢,使用的这个叫关键字呢,定义的,现在的话呢,我们定一个接口啊,诶我叫interface这个接口呢,假设呢,就叫做fer吧。这个结构里边呢,我们写一个抽象方法啊,叫做数方法。但如果说呢,这个枚举类啊,去实现这个接口了。
33:00
那么你自然而然的是不是也要呢,把这个抽样方法呢去实现一下。啊,很正常的哈,就是大家呢,其实这个用这个innu啊,或者叫来定义的,它呢也是个类哈。他不都继承了刚才我们看到的那个。哎,刚才呢,就是这个类呗。这个类是吧,所以它也是个类哈,那你这个类的话呢,要是实现接口了,你要想再去实例化,是不是要把这个接口中的传法给重写一下是吧。所以这块也没啥难的啊,直接alt回车,这个你就把这个收方法呢给写一下叭,如说这里边说这是一个季节是吧。哎,这就完事了。那这个写完以后呢,这不是个方法吗。这个方法呢,非静态的,那对象是不是就能掉啊。所以这块你就调一个呗。哎,所以这块我们可以来说明一下啊叫哎通过枚举类的对象,哎,调用这个重写接口中的这个方法。这就叫重写了啊,其实你改成叫实现啊也行,哎,那这块我们就拿着这个a season1,哎,随便你找一个季节,比如夏天,哎,第二是这个收方法。
34:10
这个应该都是非常熟悉的这个语法规则了。你看没啥问题,说这是一个季节是吧,诶这是可以的啊好,那这个呢比较简单,它对呢,就我们说这个情况一。啊,也就是说呢,这个枚举类实现接口。哎,然后呢,这个在。枚举类中啊,这个咱就重写吧,在接口中的。哎,这个抽象方法。然后呢,呃,当通过这个枚举类。哎,对象啊,调用此方法时。这个我们说一下啊,当通过比如叫不同的枚举类对象调用此方法时呢,这个执行的是同一个方法。
35:01
诶,那就是我们这个类里边定义的那个方法,就是你重写的那个方法啊,说这块还用说吗?这不是显而易见嘛,诶主要是为了我们说第二种情况啊,第二种情况的话呢,我们就想实现呢,当通过枚举类的对象,这个对象呢,如果不同了,他们调用这个所谓的重启的抽象方法的时候呢,他们执行的结果呢,不一样啊。这个呢,我们前面没见过,这个不一样呢,其实就是让每一个对象呢,我们专门去各自重启一下这个方法就行了。啊,那这个没见过,咱们不妨我再去这个下边啊,再去新建一个这个我们叫做a season的一个test,我写成是个二了啊。我写的是个二了啊哎,然后呢,把刚才的啊这块咱们从。从这儿吧。从这啊一直到这个,最后这我CTRLC一下。哎,CTRLV一下,然我就彻底的给它粘过来了,好,粘过来以后呢,这个我们叫in for1吧,因为在同一个包里边了啊,这我们叫in for1,这个呢,我们叫C2了。
36:05
哎,注意这块啊,然后呢,这个位置呢,改成叫二。嗯,这个位置我们稍微调一下。诶,其实就跟刚才那就一致了是吧。啊,注意一下啊,看我这块呢做调整了,哎,怎么调整呢,这个呢是一个接口,让我们当前这个类呢,是不是实现这个接口了。实验结果的话呢,我不在当前类里边呢去。重写这个方法了。我删了哈,删了以后呢,自然而然的这块就开始报错了。那怎么办呢?我让每一个对象呢,各自去实现这个抽象方法,我在这个位置。整一个大括号在这儿呢,我们去,哎,Public。哎,Y来一个收。哎,这么着。针对这个方法我们做一个实现啊,这是春天是吧。这个我们。来一首歌吧。春天在哪里?哎呀,有夫妻的一样。好,这是一个,然后呢,我们在这个位置也一样的道理。
37:02
哎,把它CTRLC啊,这呢也来一个。啊,宁静的夏天啊。对啊对宁夏是吧,好,然后在这个位置啊,也整个大括号。啊,这个粘过来再来一个。秋意浓啊。嗯。啊,然后呢,在这个位置啊,也再来一个。哎,站过来。啊,这个行,大约在冬季啊。给大家听的歌也都比较老了是吧?啊,从小听到现在都一样啊。好,你看这个我写完之后的话呢,他也不报错了啊。哎,说明这种写法呢是可以的啊好,那这个写完之后呢,上面我们就简单测试一下啊。啊,其实这块就完事了,然后我通过这个叫SEASON2呗,哎,我就调这个value了啊。把这个所有的对象呢,我们都拿到。
38:00
哎,那我来一个for循环。哎,Y64.ls一下好,那这个Y6I。这呢就是每个对象了啊,这个时候我们再去调这个售方法的时候呢,你发现他们各自就是调各自对象来重启的这个方法了。哎,这呢,是我们刚才这个春天的这个是吧,哎,夏天的,秋天的,冬天的。诶,这长就说完了啊,所以呢,回到笔记这块啊,稍微补一下这个情况二呢,这个呢,我们相当于是呃,让。哎,枚举类的每一个对象。啊,去重写接口中的。抽象方法。啊,然后这样的话呢,当通过不同的枚举类的对象调用此方法时,执行的是不同的方法是吧。执行的是。哎,不同的这个,呃,实现的方法。就可以了啊行这呢我就说完了,实际上这块本质上来讲呢,大家可以把它呢,就看成是一个匿名的。
39:00
实现类了是吧,因为你把这个方法是单独的给重启了,这其实都是。啊,相当于是,呃,继承了我们当前这个类的一个匿名的紫薇了,相当于是。当然这个细节呢,你说我又又又有点懵了,诶,不用管那个了,你知道我们可以单独的针对每个对象呢,去重写一份。就可以了啊,在有一些特殊的场景下呢,我们可能会去用啊,那我们就可以这样去做就行了,好,那这呢说完之后呢,其实我们整个关于美几类呢,也就讲完了。就完事了啊,稍微的总结一下啊,就是首先呢,大家知道什么叫美女类。啊,一说到枚举类的话呢,其实我们这个以前大家上学的时候呢,这个学数学的时候,有一种方法呢,叫做枚举法是吧。对,枚举法,或者我们叫这个穷举法。啊,举个例子啊,比如说这有个骰子,这有个骰子,说这两个骰子呢,哎,往这一扔,问点数之和是七。说有多少种?这个你就别这个大的方向去展开了,你就直接呢,把这个所有满足的情况就都列出来不就可以了吗。
40:01
哎,这个就叫枚举法啊,枚举法或者叫穷举法,它这个前提呢,它一定是有限的哈。你别这块你列一下说十以内的所有的这个浮点数。那这辈子估计就耗到这儿了是吧?没头啊,无穷的,那就搞不定了啊,诶所以这个有一个类呢,叫枚举类,那就说明这个类呢,有一个东西它是有限的,就确定那么几个,诶什么有限呢,对象。啊,就确定了几个对象,那我们现在就相当于通过代码的方式,如何去限制满足这样的一个特点。那其实呢,这块还是通过构造器来进行限制啊,说白了就是你把构造器呢私有化一下。啊。计划一下。然后呢,在你这个类的内部呢,把这个对象呢就造好,区别于咱们的单立模式,就是这时候呢,我这个对象呢,不止一个,那你要有几个,那你就造几个就完了。啊,有有相应的这个每个对象的这个实例变量,实例变量你也可以再去声明一下啊,然后对应的这个权限呢,稍微的大家关注一下就行。那么以后呢,大家再去定义枚举类的时候呢,就不要呢,用咱们这种传统的方式了,直接呢,大家就使用这个关键字呢去定义。
41:04
啊,它定义起来的话,会更加的这个方便一些。那接着的话呢,咱们来看一看这个科德练习题啊课练习例之前呢,首先我再写一个案例哈,这个案例呢,大家再去体会一下我们这个枚举类的一个使用啊,是这样子的,我这儿呢有一个叫员工,然后呢,呃,期间呢,我已经写好了,这个叫animal,叫做status,用它呢来表示公司当中员工的一个状态信息。好,那针对于具体的这个员工来讲呢,我们就有这样的几个属性啊,比如说呢,叫private员工呢,有string型的name。Private。哎,有in型的age。这个呢咱们就比较熟悉了,这呢我再加一个叫private status。啊,他呢,就叫做status。OK啊,这个枚举类啊,你也可以把它就看成是一个类了,所以呢,它作为引用数据类型的变量,作为我们当前的类的成员变量啊,也是没有问题的。好这个呢,我声明完以后呢,接下来这呢,我就可以呢,诶使用这个相关的这个工具哈,比如说首先提供呢,他们仨的这个盖菜方法。
42:03
接着的话呢,我们去提供这个构造器。隔高期这一块的话呢,我们首先提供一个比如说空餐的。哎,再来一个这个代餐的。把这三个参数呢都提供,然后我们再加一个to string方法。诶这样好,这呢就是一个正常的一个类,或者呢,也构成了一个渣宾了啊好,那么针对这个status的话呢,我们在这儿呢,给他去提供好,因为呢,这叫员工的状态啊,这个呢,我们说完全可以声明成是一个媒体类了。就是它呢,有几种状态呢,是确定的,就不用呢,我们回头呢,再去造这个employee的时候呢,在这里边我们去new这个具体的status了,因为就那几种状态,我就提前给你造好,你直接过来用就可以了。这呢就是一个枚举类了,那对于员工的话呢,这个状态呢,不妨呢,我们就参考一下之前提到的。啊,比如说就以这个为例,那它就有这样的几种状态。那就意味着这里边儿的每一个状态呢,都看作是status的一个对象了。没问题哈,那你看我这块怎么去写。
43:02
啊,这个呢,写出写写出来的结果呢,可能有点出乎你意料了啊,非常的简单,哎,我这块儿先给你过渡一下啊,你看这呢,我们是这个季节,这个季节的话呢,咱们说每一个季节呢,都还有两个实例变量啊,那现在没有。那就意味着我们这里边儿的这两个是不是就省略了。好,然后呢,这两个省略以后呢,我们这个类呢,就只有一个空三的构造器了,构造器呢,默认的话呢,是不是一个类就有空单构造器,所以构造器也给省了。然后这个呢,你也不会有相应的这个实例变量盖塞方法,这个储存量假设我们也不需要。那其实呢,这块一上来是不是就只有这几个对象了。这个对象的话呢,里边也没有具体的参数啊,小花呢,其实也能省。好,那么你看到这个结果呢,就会比较帅一点啊。Busy逗号。Free。逗号啊,VOC逗号。分号写完了。就这四个哈。
44:01
你看极其简洁是吧?哎,这呢,其实才真正体现了我们使用这个关键字定义枚举类的它的魅力所在啊。写完了啊好,写完以后的话呢,咱们这边就可以做具体的这个测试了啊。Employee的一个具体的测试啊,好,没方法进来。诶首先我们这块呢,去创建哈,Employee一个一一啊,你一个employee这呢,比如我们就使用啊CTRP这个代餐的这个,比如说这个呢,叫Tom啊,这个也12岁了,21岁是吧,然后这个呢,Status的时候呢,因为它是媒体类了,直接用现成的就行,我们就status,比如点BC了。就这么着,然后呢,这个一一呢,呃,咱们刚才也重写这个to string方法了,是吧,所以直接呢,我就这样打印一下了。那么这个在打印的时候呢,它调它的这个twoth string方法,Twoth方法呢,你看一下他把这几个值呢就掉了,然后这个name的话呢,是个string string的话呢,也重启了toth string了。所以呢,就打印这个字符串的值A值的基本数类型status的时候呢,是不是也会掉它的图论。
45:00
他的to string,因为呢,它是因为咱们是用这个来写的哈。所以他的图呢,是不是就打印了他的这个名啊,就。对,所以说这个呢,呈现出来这个效果呢,也还可以是吧,所以我们去run的时候呢,不会打你这个状态的一个地址了,而是呢,就写成叫BZ了。啊,一切呢,都显得非常的自然是吧?哎,这就可以了,比如说我们在实际开发当中,那就是这样去用。啊,非常的简洁啊,说完了就啊。这个我们就关掉了,接着的话呢,我们来看这个第一个题目。正态使用枚举类实现单例模式。啊,前面呢,我们讲单立的鄂汉式懒汉式都讲过了啊,说现在酶一类,如果呢,你要只有一个对象,那你就是单立的是吧。这个怎么写?咱们写两种方式吧。什么叫两种方式呢?就是我们。诶,先针对于5.0之前的这个写法,咱们也看一看啊。因为我要不写,有同学呢,可能自己写写了还来问了,那咱们这块呢,干脆就把它说一下得了啊把这个半个话呢,呃,其实大体上的话,跟咱们前边写法呢是类似的哈,比如说我们自己呢,去生明一个构造器是吧。
46:09
哎,私有化构造器这里边儿呢,也没有针对这个对象有一些实例变量了,我们也就不写了,下一步呢,是不是直接把这个对象就造到这儿了。之前咱们写的时候呢,是写成private了。叫BANK1。这个我写成半一了啊,行,那就instance。然后这块我们直接呢,就哎半个一就把它给造好了,然后呢,我们再去提供一个get的方法,盖的方法呢,得用类来调static,所以这块呢它呢也加上了static。当初是这样写的,对吧。哎。哎,直接return一下我们这个instance,这个是叫懒汉还是恶汉来着。饿汉式是吧,好,然后呢,在这块我们只是做一个测试而已啊,其实重点呢,不是测试的,主要呢,就是这个类目前的写法就是鄂汉式,好,那现在我想改一改,比如我们在讲这个枚举类的时候呢,咱们就没有再通过这个方法去掉了,而直接拿类去掉了啊,这就意味着我们就没有必要呢再去提供这个方法了。
47:06
那直接呢,我们把这个是不是就改成public了。那么这样写完之后呢,是不是就可以了呢?这块注意还差点意思。必须呢,要把这个造的对象呢,加上一个final。诶,所以要小心一点啊,就是这个你像我们这呢,也看作是一个变量了啊对这个变量的话呢,体现为其实是有两个角度,一个角度就是你获取它的值,一个角度呢就是设置它的值。诶我们呢,诶之前呢,私有化了,你只提供get,其实呢,只体现为叫获取值,S的话呢,本身因为private就调不了。但是现在你把它加上public了。那就意味着除了这个类之外呢,它是可以来调了啊,那调的时候呢,我是不是就有可能。对,我会这个半黑点incense,我直接给你写个now是吧。哎,你要没有反正的时候呢,不就会出现这样的问题吗。那你这相当于就没有实力了啊,所以呢,为了保证就是你这个对象造出来以后呢,你能用要用就用这唯一的一个实例,你改都不能改,所以呢,记着加上一个final啊。
48:09
哎,把这个事儿呢,注意一下就行了。这呢可以看作是咱们这个相当于是JDK5.0之前的这个啊使用。枚举类。来定义这个。单利模式啊。哎,真的就是这样一个写法。这个就完事了啊,然后的话呢,我们可以呢,直接就写到这儿吧。要使用这个那几类呢。今天我们是吧,这个来个半二吧。这个大写。这个呢,你看这个银行叫什么名,就比如说叫中国人民银行。这个。China。人民。这个我自己编了就成了是吧,中国人民银行吧。写完了是吧。数据成这样了。啊,因为他也没有这个呃,具体的实力变量了,构造器也给省了,直接这就可以了呗。
49:06
啊,就这样写啊,有点太简洁了啊呃,稍微的要复杂一点的话呢,比如我们再换一个,当初咱们举例的时候呢,是不是还有一个女朋友是吧。哎,啊。哎,就这样。好,那女朋友的话呢,呃,比如说有个名吧。哎,女朋友有个名,这个我们先先写他这个具体的这个咱算是算是这个叫。嗯,实力变量了是吧。呃,死string类型的。这个我们叫一个name。嗯,行,这个我们就先这么着啊。还有一个什么呀。年龄。这个呢,来一个int型的age,这样吧,好,这个构造器呢,把它写出来private一下。这个呢,叫。Girlfriend。哎,瓷砖类型的。Name the age。哎,这样啊,这点。Name等于name。
50:00
A等于A啊,这个写好了啊呃,然后的话呢,我们给大家造了一个对象,这个对象的话呢。嗯,名字这块那个对象名,其实这块有个名啊,这个我就比如说就省略了吧,不要了啊,这个不要了。这个我通过呢,给这个对象起名的时候呢,我就表示你这个明德了。假设女朋友呢,叫。小丽吧。小丽是吧,里边呢,这个嗯,18岁啊,有点小是吧。20岁啊。这时候就写完了。看OK吧。哎,咱们不是原来的时候呢,是这么着吗?现在你在里边自己造啊,说叫public static final啊这个呢叫诶girlfriend。诶,然后呢,起个名啊叫小丽啊,还得下划线了啊,诶你有一个叫girlfriend,然后这块呢,把你这个年龄啊20岁诶这么着写,然后咱不是说呢,像这种呢,都给它省略了吗。诶后边这块呢,New这块也给省略了,然后这边就,诶在这块呢,就写了一个。
51:03
年龄可以了。就完事了。啊,然后呢,回过来啊,在我们这个具体的测试这块儿,你想测那就可以测了哈,这个叫诶go点诶就一个小例是吧,诶打印一下这个呢,调他的出资方法,默认的话呢,就打他这个名了啊其实就把这个小丽这个名给打出来了。就他啊。行,这个呢,就我们使用这个5.0之前的方式,下边呢是使用5.0的这个方式,这个呢,我举了两个例子,这个呢,就是没有具体的对象的这个实例变量了,这个是有的,呃,稍微的有点区别啊。5.0。来使用。啊,或者叫关键。定义枚举类。那这个方式呢,去定义这个单利模式,哎,这呢就说完了啊。好,稍微的大家体会一下就可以了,然后接着的话呢,我们来看一下这个下边的练习,那这个练习呢,相对来说也比较简单一些,说定一个颜色的一个枚举类。
52:01
来使用这个in或者I定义就行了,以后呢,大家就不用5.0之前的了哈,大家如果定义类就用这个关键字就行。说那有七个颜色啊,就是红橙黄绿青蓝紫啊,就这几个,然后也没有相关的一些所谓的这个实力变量了,那其实呢,就。非常的简单是吧。直接呢,我们这块呢,就新建一个就叫做color,我是一个是吧。然后这里边儿呢,一共有七个对象啊。其已经写好了。哎,直接往那一粘就完事了。哎,你在具体的位置,你想用啊,有它这样的一个属性,直接呢就声明它啊赋值的话呢,就直接点一下掉就完了。就搞定了啊。啊很简单,然后这个下边的练习呢,在刚才这个基础上呢,稍微的变得复杂了一些,还是呢,这七个对象。当然呢,这七个对象呢,它有一些具体的实例变量了。实体变量对应的有呃这样的几个情况啊,RGB就是你这几个颜色呢,它是怎么配比这些。
53:03
值的哈。哎,这就是就是每个颜色的话呢,RGB呢,是从零到二五,一共是256种情况。啊,这个乘到一块儿,相当于是你看这是256是吧,这也乘以256种情况,这也是二五十六,呃,一共是多少。好像是1600万吧。所以以前大家买手机的时候呢,他有时候会写说这个支持1600万色的这个像素,就相当于他可以呢,把每一个这种搭配出来的颜色呢,都可以呈现出来。就这意思啊。好,然后呢,它有一个string形的一个说明叫description啊一个描述啊这样一个情况,希望呢,在调two string方法的时候呢,呃,打印这样一个情况。这儿呢,你稍微的留意一下,看这个怎么去处理。哎,这个题呢,稍微的啊,比刚才那个要难一些了。来,咱们盯一下啊。好,回过来这块呢,我们。往上一点啊,这呢,还是这个color。关于他的一个测试呢,我先这样去写啊,我就写到一起吧。
54:02
哎,在这个下边呢,我们来一个这样的去声明的一个color。好,就这样了啊。好,那这里边儿呢,掉了有针对每一个颜色的对象呢,它有这样的几个属性,那咱们就先把这个属性呢,先定义出来,属性呢,注意呢,是private final修饰的。啊,这呢,对应的有个ride是吧,这一共好几个嘛。省多了。这是啊。这是录。哎,这样啊。好,然后呢,还有这个叫private final修饰的死类型的。是吧,这是关于这个颜色的一个描述啊。好了,然后下边呢做的事儿,这个针对于四个属性的get方法,你要愿意提供呢,咱们就给提供一下。那就点上它这几个都给吧,OK1下行,然后呢,下边我们要提供这个构造器了。隔套器的话呢,这块还提了啊,就是把这三个颜色,还有我们这个描述呢,都给它提供上。
55:03
我就自动生成一下。构造器,哎,这几个都有的,还有一个OK。这个前面的话呢,大家看啊,这个构造器呢,我private呢,加上也行,不加呢也可以,它其实就是私有的。啊,当你试图把它写成public的时候,还报错了啊。所以呢,这就还是我们这个这个关键字呢,它的起作用了啊,就是这构造器呢,就就是一个不写也是private的啊。好,这儿呢,我们把这个构造器呢也写好了,下边要做的事儿就是在我们当前的类里边呢,把这个对象呢造好。啊,他这块给我提供的意思就是说目前是没有对象的是吧。你看我这样一删,他还报错了。这个呢,就表示你啥对象没有。来,下边我们去创建这几个对象了。嗯,对象的话呢,其实。看能不能抄一抄。抄抄应该是有气的啊好,我CTRLC一下。不太好抄是吧。
56:00
先这样吧,CTRLC。哎,我这样先拿过来,然后呢,我再。Andsa。看我咋弄啊。怎么着是吧,哎,第一个呢,叫红色的,哎,红色里边呢,其实后边的对应的就是我们构造器的这个参数了,对吧。哎,参数的话呢,这不这仨嘛,往这一放,然后后边这块呢,我们再补一个描述就行了。这描述根据这块参照一下,这就写它具体是什么颜色。哎,红色是吧。这就一个了啊。你还是可以去抄一下的。哎,这是一个,这个呢,橙色。哎,橙色啊这样。好,下边这个。嗯,黄色。这呢,就一个一个来就行。啊,这个呢,我们就称为那叫三原色啊。绿色。后边呢,这个咱们Java的同学呢,学web的时候呢,我们会讲到这个页面,页面的相关的一些颜色的时候呢,我们到时候会讲这个事儿哈。
57:05
绿色。那么问大姐,你说这三个颜色,我们要是都把它调满了哈。是什么颜色?黑色吗?对,都调满了,就是白色呗。青色是吧?你三个都调成零,不才是黑色吗?黑表它是没有光是吧。嗯。哎,这是绿蓝色啊。紫色。这个数呢,你也不用去记啊。紫色啊。好,终于呢,就搞定了啊。好,这呢,我就把这七个对象呢,就创建好了,这呢体现的就是构造器的这个参数的意思啊。嗯,然后回过来说呢,在测试类里边呢,我们去创建这个对象,然后呢,打印这个对象,希望你打出来是这个东西,默认的话呢,这个to string,咱们是继承了这个它的那个复类了,它那个负类呢,默认打印的其实就是这个对象名哈,所以这是我们先看一下啊,先来一个may方法。
58:18
通过这个color点随便我们调一个,比如说绿色哈,去打印一下,这是我们做一个执行。诶,你看他这时候打的是他,他希望呢,我们打印的是这个效果的。这么着是吧,好,那就意味着我们希望呢,把这个事儿呢给重写一下啊。所以回到比如最后吧,我们来一个重写,哎,图斯春啊,这块他这么着的,那就先这么着吧。嗯,这里边儿的话呢,它上来你看这有个这基本上等于删掉吧。上来这个啊,这个呢,其实就是你这个对象名是吧。那对亚明这块呢,怎么整。哎,对哈,要么呢,你就写个点出。因为你现在你正在重写默认的那个,呃,那个类innu里边呢,它不就是打印你的名嘛,是吧,所以你写成修点图论也行,或者的话呢。
59:09
对,他还有个方法叫name是吧。这个他打印的也是你这个对象名都可以哈。然后他后边呢整上。这是这几个属性值吧。啊,那就整个小括号,然后加上你这个red。Red是不是这个属性嘛。这个逗号一下。Green。逗号。Blue。嗯,然后呢,一个小括号是吧,然后呢,这块有一个这样一个箭头,箭头后边呢,就是你这个description啊。哎,基本上就这样呗。OK啊好,写完以后呢,这是我们再去做个run。咱这呢是绿色的啊green,嗯啊一样是吧。行跟大家这个这不可以吗。这就成了啊。完事了啊,这样写,然后这个位置的话呢,你也可以把它给我复制一份啊,把上面这个竹式的。
60:02
啊,这个你千万别直接写twoth,这就成了一个。磁循玩意了是吧,递归了哈,对,你写成休克点出也行。你看这不一样吗?诶也可以啊好这呢,我就拿着一个对象呢去举例了,其实呢,有好多个对象,你随便挑一个都行。打印这个信息,这就可以了。OK,那么这个完事以后的话,整个我们这个题目呢,也就告一段落了,这呢我就举了几个例子,大家呢,也可以试着去写一写啊,整个的这个枚举类呢,其实不太难。啊,大家呢,就主要呢,掌握那个呃,In关键字的这种定义方式就可以了,当然呢,这种方式呢,多少你还得熟悉一下之前的啊,要不的话呢,你会感觉到。非常的难以接受,一上来说这这什么东西是吧,所以呢,我们先讲的5.0之前的,然后我们改了改,诶大家就知道哦,它是怎么来的了。啊,但是呢,真正写的时候呢,就写这样的方式。啊,就可以了。
我来说两句