00:00
好了,同学们,咱们继续再往下啊,假如说我们现在再研究一下我们的这个object里边的一个to string方法,TEST04。来。注意听啊,关于什么呀,关于object类中的to string方法,首先第一个to string方法的作用是什么?它的作用是什么?其实刚才呢,我们从那个源代码里面,其实已经看见了,它这个方法的作用是将Java对象转换成字块形式吧。作用是什么?是将。将什么呀,Java对象转换成什么?哎,字符串的形式啊,这是这个方法的作用啊。将一个叫做Java对象的东西转换成字符串的形式。
01:07
那么object类中to string方法的默认实现是什么?我们刚才也看见了,它的默认时间是什么呀?是这样的。从哪儿找呢?我找一下啊。嗯,在哪,在CHAPTER12里边是不是继承这块。啊对,就是这个啊,我们拿一下在哪啊,在这个地方有个two string,你看就这个呗。拿过来啊,拿过来啊,这个就关掉了啊,然后呢,拿过来放到这儿。嗯。突方法的默认实现是这个。对吧?这个方法的作用是to string吗?To表示什么?To string就是转换成方法名啊,方法名的意思。意思是转换成什么呀?
02:02
啊,就是我们调用一个对象的to顿方法,就可以将一个对象转换成它的字符串形式。的意思是什么意思?含义啊,就是调用一个Java对象的to string方法,就可以将该Java对象转换成字符串形式。字符串的表示形式啊,有这样一个一个作用啊,这是to方法设计的一个目的。那么突顿方法的默认实现to string方法给的默认实现。够用吗?什么意思?大家看好了啊,Public class我们叫做什么呀,Over read test,零四,然后呢,Public static public static void men。然后接下来在这里有个class,我们叫做date,或者叫my time吧,各位my time my time。
03:09
或者my date都行啊,这是一个日期类,日期里边有什么呀?有这个年月日是不是啊,你比如private年月日各位啊,然后呢,构造方法给一个午餐的,造方法给一个有餐的,那么这个构造方法这块呢,This点,比如写上this.year year是不是好this点。man'this.day day,好,再来一些方法,That year,哎呀,这个痛苦了各位啊,稍微等等一下,有工具的话,咱们这个根本就不用写,可是现在我们还没有工具啊,那没有工具就只能这样写了啊,Get year,然后将来return year就行了啊set get方法我们写上来public VO set,然后呢,Int类型的math,然后接下来return谁啊,我们的一个math,然后呢,再来一个返回int,叫get math,然后呢,Return math,哎呦,写错了吧?H啊好,那么接下来再往下呢,还有一个方法叫做Saturday,我写错了,同学们说话啊,同学们说话来。
04:28
来这边呢,是this.day day是不是好,那么接下来我们继续再往下,再往下的话呢,应该是get day啊get day好了,那么接下来return一个day就可以了,好,大家看这是属性私有化构造无餐构造有餐,然后再往下set get方法写上,那么接下来啊,我们来看看创建一个日期对象,创建一个日期对象怎么创建呀,My date对不对?哎,T1你一个什么呀?哎,My date。
05:01
那这一块呢,我们假如说啊,默认调用构造方法创建是1970年1月1日,那就写上,比如1970年1月1日行吧,嗯。This month等于month上面写错了。累点。Mo Mo。哦哦哦。啊,好,对了吧,这次对了吧,Set set get set get set get,行,那咱们继续啊,呃,假如说你调无参构造,那么这个时候我们创建完这个对象之后啊,我们可不可以调用图论方法呀。将对象转换成什么字符串形式吧,将对象转换成字符串形式吧,好,那各位怎么转呀?system.out点打印输入谁啊,T一点什么to string,这个T1呢,就是这个对象,这个对象呢,它继承的是谁呀?Object,如果你不写,他继承的就是这个,那现在呢,我们调to string方法之后呢?输出的结果是什么?
06:18
Java c编译overwe test04.java Java均行,Overwe test04走好,大家看输出结果是man什么什么什么什么好,我们我就问大家一个问题,你对这个输出结果满意吗?你对这个输出结果满意吗?你对这个输出结果满意吗?我应该这样问,就是问问什么,你对这个输出结果满意吗?满意吗?你输出一个日期的话,你是不是更希望他输出,嗯。哪年哪月哪日的信息啊。是不是?
07:01
你希望他给你输出这么一个东西吗?长得这么诡异?你对这个输出结果满意吗?如果是我的话,我对这个结果输出不满意。我希望你把这个日期对象给我转换成字符串的时候,你能够给我转出哪年哪月哪日的信息。明白吗?我不希望你给我这么一个结果。啊,所以大家思考一下,我们曾经说过什么时候需要使用方法覆盖。就什么什么时候需要使用方法覆盖。咱们讲过的东西你不能说,你还就上节课的东西你不能说,就忘了对不对,什么时候需要方使用方法覆盖呀。如果说什么。从父类继承过来的,这个方法怎么着?已经无法满足我子类的什么。业务需求的话,我子类有没有权利在这个方法里,在这个类里边对那个方法进行覆盖啊。
08:06
有没有这个权利各位,就是说我比较嫌弃什么呀,我觉得啊,就是说从什么呀,Object内中继承过来的那个to string方法已经无法满足我业务需求了。对吧,我在子类叫做my date中有必要对什么呀,父类的to string方法。进行覆盖或者叫重写对吧。因为你已经无法满足我的我的需求啊,我的业务要求是。调用to string方法进行,进行字符串转换的时候,希望转换的结果是某某某某年某某月。
09:02
某某日这种格式。你明白吗?就是希望转换的结果是这个结果,那你现在是不是就就有必要把这个方法重重写一下,因为你my date new出来调T的toth,你没有重写的时候,这个toth调的是object,老祖宗的toth方法,你现在在此类呢,继承类之后,你发现这个方法不够用啊,不够用你就在在这重写呗,是不是,哎,重写啊,重写。好了,那么这块我就可以删掉了啊,这个我们之前记过笔记,你对这个输入结果满意吗?当然是不满意。对吧,哎,希望什么呀,希望输出某某年某某月某某日。对吧,所以这个时候。我们要知道这个是什么重写tooth方法之前的结果啊,这重写谁的呀?My date吧。
10:07
麦的啊,之前,那我现在要重写麦to方法之后的结果会是怎样的,我再把它拿过来来再放到这儿,行,那么这个时候呢,我在这儿重写,记住重写一定要复制啊,重写一定要复制,不要一定要复制粘贴。不要手动编写,会错的。啊,会错的,你怎么办啊,把这个复制一下各位。你一定要复制一下啊。你千万别写,因为你写的时候就有可能怎么着,有可能把这个S啊变成什么,有可能把S变成小写,我告诉你,之前我见过好多同学就写的时候,叭叭叭就在手动手动写,练指法,突兀突兀突兀顿8S小写。对吧,S是大写,你要注意啊,这个地方千万不能错了,要不然就不是方法覆盖了,明白吧?哎,千万要注意啊,那你这块怎么写啊,我们可以这样写,Return是谁啊。
11:09
Return,那就这个里边是私有的,私有的我可以在这可以访问,没没问题啊,加上什么呀,哎年再加上什么呀,再加上这个month月呗,再加上什么呀?哎day加什么呀?哎日呗,好,我问大家个问题,这个加号在这里是不是进行字符块拼接?是不是对字符串进行拼接,这是不是就是年,这是不是就是月,这是不是就是日啊,年月日是不是变量啊,其实这个地方有this点嘛,只不过this点可以省略,可以省略不写嘛,对不对,哎,这样做就可以了,那么接下来我重写这个方法之后,我们再来看Java c去编译,Java去运行,上面都是没改,大家看以后我们的突出方法是不是就输入1970年1月1日啊,你看。我只要调你to string方法,把T1调to string方法,输出结果就是什么呀,就是1970年1月1日。这个结果为什么是这个结果呀?因为我T1调图方法的时候,T1指的是这个对象,这个对象把我们的这个方法已经重写了,所以我们调to方法一定是重写之后的这个方法,那么之前object类当中的这个方法,在at符号的这个方法已经不再调用了,它调用是重写之后的方法,调这个方法返回的是一个字符串,那么这个字符串呢,我在这里输出就可以了。
12:20
好,那大家是否还记得,当输出一个引用的时候,系统就是print LN方法会自动调用引用的。To string吧,方法吧,是不是,所以system.out点打印我们直接输出T1的话,我问大家一个问题是输出啥?还记不记得,我我我今天上午在讲的时候说过一个print LN方法,在输出引用的时候,它会自动调用这个引用的to方法,还记得吧?哎,还记得的话,咱们来编译并执行,好大家看最后结果是不是还是这个呀,197年1月1日啊,好,那么再往下在这个位置呢?我们在my date t2等于new一个my date啊,用完之后呢,接下来这块能写上,比如说2008年的8月8日,好,这个调的构造方法是不是另外一个构造方法呀,那么这个时候我输出T会是什么样的呀?system.out.line打印输出T2,当我们输出T2的时候,它也会自动调用T2的to string方法,是不是,只不过这个你可以不写。
13:26
对吧,你不写这个to顿它也掉,那么这个时候T2的对象是麦的对象,它T2的to顿方法是不是就是这个方法呀,所以这个时候是不是会输出2008年8月8日啊,所以来看Java c呢,去编译Java去运行,你看2008年的8月8日,那以后呢,就不再输出这种东西了,不再输出对象的内存地址了,它输出的是不是就是我们的这样的一个结果呀。哎,这个跟类中新建一个普通方法,这个这个跟类中新建个普通方法,然后直接调用这个方法不是一样的吗。嗯,哎,林队问的好啊。
14:03
他问什么意思呢?就是说就是说呀,我在这个类当中,我自己去新建一个别的方法呗,是不是我干嘛要把人家这个突俗的方法给它覆盖了呢?哎,这是因为啊,我们还没有讲到多肽。那各位多肽讲了之后,你就知道林动啊,你记着这个问题啊,记着这个问题就是说哎,老师我都不太理解是吧,那你这个方法在这重写,那你为啥重写覆盖人家呢。对不对啊,那我不覆盖不行吗?我不覆盖我写一个别的方法不行吗?这个方法我叫别的其他方法。对吧,行不行,从代码上来说,你这个说话没毛病啊,没毛病,但是呢,方法覆盖和我们紧接着要讲的多肽机制有关系,而多肽多肽的存在让程序具有很强的扩展性。
15:00
啊,为了达到多大效果,所以我们这里才会有哎这样的一个方法覆盖,各位啊,才有方法覆盖。所以这个多肽这块还没讲,你可能体体会不了,说那诶老师我感觉你这块没必要这样写呀,你是不是写一个普通方法就行了呀,你为啥干啥把人家奥类里的方法覆盖了呀,对吧,这个跟多肽关联在一起,解释好解释啊,到时候咱们再看啊再看,反正这会单独去讲方法覆盖,我不知道大家这个例子有没有听懂啊,有没有听懂,就是说我们没有重写你这个to论方法之前你看。是什么样的呀?哎,我们再去编译一下,我们再去运行一下,大家看三个是不是对象的内存地址啊,哎,你看你看你看是不是,哎,如果说我们现在把这个突方法放开的话,就表示方法覆盖了呀,方法覆盖方法重写的话,那么这块呢,哎,我们再去编译,我们再去运行,你看输出的结果就是什么呀,哎,年月日,年月日的信息啊,年月日的信息,包括我可以在这里再举一个例子,比如说我们叫class,叫student class student。
16:03
那么这个学生类这块呢,有什么呀?有这个学生的这个名字对吧,有学生的编号啊,简单写一下,那么接下来呢,在这里提供一个工造方法student,然后呢,我直接简单写一下各位啊,不写那么多了,Student name好,接下来这写this number number是不是,然后呢,This their name name好了,那么接下来我们对这个。类型进行对象的创建,那么创建的话怎么创建啊来。我们创建学生对象student s new一个什么呀?Student new的时候学号111。姓名是什么呢?是张三,那么接下来呢,system.out.line打印输出什么呀?输出S大家都知道这个呢,会输出内存地址对吧?输出的内存地址Java c呢去编译加运行。是不是输出一个学生的学生的什么什么什么在堆内存里对对象的内存地址啊。
17:01
那这是什么呀?这是重写突死顿方法之前是这样的效果,对不对?那重写to string方法之后会是怎样的效果呢?就是说我可能啊,输出一个学生对象的时候。啊,可能更愿意看到什么呀,学生的信息,不愿意看到什么呀,哎,对象的内存地址,我想看的是学生信息,那么你应该怎么办呢?对不对,哎,那你就应该在这儿怎么着啊,哎,把这个方法怎么着,给他重写一下,是不是拿过来你尝试重写,重写的话,你返回的信息是什么,你可以自己组织,你说学号是不是,哎多少啊,Number呗,加上一个什么呀,逗号叫什么呀,姓名是不是,哎姓名这块的话,咱们加上一个什么呀,Name就行了。那这样的话,你拼完这个字符串之后,你重启了这个方法,这不重写吗。
18:01
是不是重写是不是,哎叫方案覆盖吧。方覆盖啊,方法覆盖啊,那覆盖之后呢,接下来编译一下再去运行,大家看是这个结果是不是就跟上面就不一样了。对吧,上面是对象内存地址,下面你看是不是就是一个学生的信息啊,你可能对于我们来说以后啊,我们可能更愿意看到学生的信息,而不愿意看到一个对象的内存地址,所以一般情况下object这个类当中to方法是,诶定义这个方法一般情况下是让我们重写的啊,我们就是重写这个方法啊,以后呢,我们可能大部分都都需要去重写这个方法啊,如果你不重写,它掉的一定是object这个类当中的这个方法。To string啊,尤其这个system.out print LN。你输出一个引用,实际上它会自动调用谁呀,啊,它和这个是一样的,自动调你图。自动调图啊,来编译去运行。是吧,啊,一样的结果啊,一样的结果行了,那综合这些东西呢。
19:04
我们算是把我们的方法覆盖呢,就说完了,各位啊,方法覆盖说完了。但是呢,再往下有一个比较核心的这个面向对象三大特征还记得吧,一个叫封装,一个叫继承,一个叫多肽。是不是那多肽的话,咱们到今天下午的话再讲吧,今天上午咱们就不再往上讲了啊,不再往上讲了。这个多肽呢,说完之后呢,前面这个方法覆盖遗留的一些知识点。对吧,对他有疑问的其实都可以解释,包括林动同学刚才在这里提出的这个疑问是不是,哎,也可以去解释,现在还解释不了啊,解释不了。
我来说两句