00:01
好了同学们,那么接下来呢,咱们还是把这个还有一个作业我看啊,咱这个实际上第16的作业我们没没有讲,然后第17这块我们说了一个,还有第一个我没有说这个作业呢,其实怎么说呀,和下边的题目一样吗?同学们是不是一样?要不样。啊。一样的,那我就简单写一下啊,简单写一下这个东西,你如果第一题做出来的话,我觉得嗯,第二题应该也很简单啊,都做出来了。但如果说你没有找到窍门的话,你这两道题应该是都不会做啊。来我们看一下啊,他说呀,我就写到一个里边的各位啊,我就不再分开写了,分开写的话这个呃,有点费劲啊,大家呢,看起来也不舒服,那我就写到一块儿了啊,首先呢,我们定一个乐器这样的一个类是不是?
01:00
是有这样乐器的,这样累啊。Class,是不是,哎乐器乐器,那这个乐器呢,咱们是可以啊发声的,所以这个里边有个方法对不对,哎叫make sound make sound啊发声,这是个乐器发声的方法啊,叫做乐器发声。那么这块呢,我们应该是有子类对不对,二二二胡,你看二胡二胡行去继承谁呢?去继承二胡,它是个乐器呀,所以说要继承乐器吗。是不是,哎,然后呢,你肯定呀,要对这个方法进行重写。建议复制吧,啊复制拿过来啊,然后呢。二胡的声音呗,对吧,你就是比如输出呗,二胡的声音对不对,好,那么接下来你可能还会有一个piano。
02:03
比如piano是不是来拿过来,然后呢。我们去继承这个叫。哎,我们的一个乐器是不是同样呢,它的方法是,哎,叫做。Piano的一个声音,是不是哎?钢琴的呗,那再来一个class是吧,这个class叫小提琴。Will吗?是这个意思吗?应该是这么念是吧?来,我们再来一个方法,这个方法呢,应该就是小提琴呗。是不是啊,叫小提琴的声音,那这样的话,这是一个乐器的负类。是不是,那下边这就是一个子类呗。对吧,那下边这个也是一个子类,这个也是一个子类,一个父类三个子类嘛,是吧,定义乐手类。
03:08
这个乐手类呢,应该乐手应该有乐器,应该可以对乐器进行操作,是不是,所以这边呢有个乐手。啊,乐手。那么这个乐手呢,Class啊,然后呢,我们乐手。嗯,可以弹奏各种乐器有一个方法,是不是其实就是提供一个方法啊,当然有些人说老师我能不能这个给这个乐手加一个成员变量。这个成员变量或者实例变量啊,让这个乐手和我们的乐器产生关系,其实这种设计也是可以的。也是可以的,各位啊,咱们班有没有这样写的,就是说在这个类当中写一个实例变量,写一个他。然后呢,单独写个play方法。Play方法就这个有两种写法,各位有两种写法,你你可以怎么着呢,你可以把这个呃乐器呢,写到这个实例变量的位置上,也可以单独写一个类方法,类方法跟一个局部变量也是可以的,没问题啊,都可以,你可以这样写,比如这是一个什么呀,哎,再给一个构造方法,是不是这构造方法的话,你可以给一个什么呀,无餐的。
04:20
是不是啊,你可以给个无参的,然后你可以再给个有参数的构造方法,这个有参数构造方法就这个呗。就把拿过来放到这儿,然后接下来就this ii呗,this.ii呗,然后接下来这就这就是构造方法呗,是不是构造方法,然后接下来你再往下的话,哎,再往下的话,你就提供一个play方法呗,对吧,Play方法,那你这个play方法就不需要参数了,你可能就不是这个play方法,就不是这个德行了。明白吧,啊,你可能这写的这个play方法就是这样一个方法,就叫play。啊,然后这里边你调这个II的什么呀,I make make make sound make sound就就可以了啊,就完事,这是一种写法。
05:01
啊,这是一第一种写法,就是第一种写法就是这样写,但是你这样写就不符符合题意了,他题意不是让你这样写的,对吧?哎,但你这样写也行啊,第二种写法是什么呢?第二种写法是直接就有个乐手类。哎,月手类,然后这个月手类呢,里边没有这个实力,没有这个属性。按说乐手应该有有有自己的这个乐器,对吧。乐手应该有属于自己的乐器啊,按说上面这个写可能更合理一些啊,但这个题目出的是play这个方法里边这样一个参数,所以你在这块呢,可以直接写一个方法,这个方法就叫它,然后接下来你只要是乐手去干什么呀?啊,只要乐手去play啊,那个乐器怎么着就发声吗?点什么呀,Make sound就可以了,Make sound这不就也是多肽吗?是不是你这个方法里边写了一个什么呀,副类型吗?所以你可以把二胡传进去,你也可以把piano传进去,你也可以把这个小提琴给他传进去,都可以,那你证明这个乐手可以弹奏各种乐器吗?
06:09
是不是这是第二种写法,这个是更符合这个题意啊,就是更符合题意啊题意,但如果说你要是按照上面这么写的话,也没毛病啊,也没毛病啊,都可以,那这个测试程序怎么测呀,首先呢,我们得创建什么呀,创建。啥?创建各种什么呀,乐器对象对不对,哎,乐器对象那怎么创建呢,首先呢,我们得。把这个。呃,二胡给他拗出来。对吧,二胡。呃,二胡六二胡是不是,哎,然后呢,还有一个piano拗出来。啊,Piano。
07:01
Piano啊,然后接下来还有一个叫做小提琴。然后呢,小提琴啊,New一个小提琴拗完之后呢,创建什么呀,乐手对象,那么乐手这块呢,就拗呗,是不是哎拗一下啊拗一下拗完之后呢,我们开始什么呀,开始play嘛。Play,那play的话呢,应该是乐手点play呗,参数你可以跟什么呀,二胡。没问题啊,是不是你可以跟piano也没问题,你可以跟什么呀,小提琴都行,那么接下来我们再来编一下Java c呢,编一下我们homework的Java,然后Java去运行homework走。
08:02
你看二胡的声音,钢琴的声音,小提琴的声音没问题啊。是不是,哎,所以这个题目的话就是这样写就可以了啊,在这个乐手当中提供这样一个play方法,有些学老师我愿意给这个乐手添加一个名字行不行,那你随意这个东西你自己扩展呗,是吧,我愿意说让这个乐手有一个名字是吧?哎,你说这个朗朗啊啥的是不是,我看昨天大家好像在那一顿研究是吧,乐手的一个名字可以没问题,自己可以可以扩展啊,这是乐手的名字。对吧,哎,这是一个属性。啊,是个属性,这是一个方法啊,一个方法都可以扩展啊,这个题目最主要的一个考点是在哪?就是在这个方法的这个参数上,我让你去理解,那为什么play方法上可以写这么一个东西,因为它是一个父类啊,那这样的话,你是父类就可以随便往这传东西啊,你只要是这个类的子类,你比如说二胡,它的副类是他,Piano是他,小提琴副类是他,那你的二胡、piano,还有这个小提琴都可以创建完对象之后往这个方法这传。
09:04
这就是多肽嘛,负类型的一个引用指向子类型对象,这个方法还是编译和运行两种情况啊,编译阶段。是谁的方法?是谁的呀?是他的啊,那运行阶段呢,运行阶段这个make sound的方法就不一定是谁的了。明白麦克的这个方法就不一定是谁的了,明白吧,他可能是二胡的,也可能是piano的,也可能是小提琴的,那要看你将来在这地方我们创建完对象之后传的是个什么东西啊。问,方法里为啥不是副类型的引用可以?严彪,你想怎么写来换成另外一种写法可以,都行啊,无所谓,没问题。没问题啊,你这样写不也行吗?都行啊,来看一看。
10:01
那个延边的意思什么意思呢?是在这儿啊,就直接用上多肽。就直接用上这个多肽什么意思,就前面这个这个类型就是它负类型引用指向子类对向,负类型用直向子定向,负类型用直向子类对向,直接把它传进去没问题,行可以你这种写法也行,没有任何问题啊,加va c编译加va e行,你看跟刚才还是一样的啊,没毛病啊,你还有另外一种写法是什么。是你可以省电量对吧,你只需要这块的东西也行啊,对吧?哎,什么意思呢,你可以拗二胡给它直接扔进去啊。没问题啊,你拗一个皮iano给他扔进去啊,是不是,哎,你直接拗一个这个小提琴,你直接给他扔进去啊,行啊,你这样这个变量不给了你也可以啊,是不是,这是个乐手对象嘛,是不是,哎,乐手对象play嘛,Play,然后你有一个二胡对吧?Play你有一个piano play有一个小提琴。是不是给扔进去这样也行,你还可以省变量呢,研究完之后直接扔进去调这个方法play吗?是吧?哎,那这个play方法的话,我们就直接传参传进去就行了啊来再编译再去运行,好大家看没有任何问题是不是,哎都是可以的啊,程序随便写随便写啊,只要是说你这里用了多肽就行了啊,用了多肽就可以了。
11:18
好了,这个大家还有什么疑问吗?这个题目。有没有什么问题?问题说话。我我看了一下啊,昨天那个翟老师,翟老师好像给了一个答案是吧,这个答案是有一个有一个这个程序是new a,然后括号有new b是不是,哎,这个大家先不用看啊,这是一个内部类的问题啊。这块这个这是个内部类啊,内部类的语法,他用的内部类的语法,内部类的语法,这是后期要接触的啊,后期要接触的嗯。
12:09
现在先不用管啊,先不用管。行吧,行这块呢,我就说到这儿啊,就说到这儿,那行吧,这个第17的作业就说完了,第16作业我们先放一放啊,我们不能说今天一直去讲这个作业是不是啊这个。咱们还得讲讲讲新的东西啊,讲新的东西你没事,作业题多的是,你可以慢慢去研究啊,咱们找时间再把那个这16的作业再看一下,好吧,哎,咱们都看一看啊,放心啊。
我来说两句