00:00
就有的人说老师,那这个私有的东西有啥意义呀。就所有的东西你不能访问,你这你这叭叭叭声明这干啥呀?好,我问大家一个问题啊,有没有可能会存在这种现象,就是说你这个方法不想让别人掉。但是你这个方法又必须得存在。你这个方法只是供你当前编程使用的,你这个方法不想对外公开。但是你可能会在别的公开的这些方法里面去调用这个方法。有这个可能。因为你为了达到代码复用嘛,所以你在你自己的类当中,你写了一个这样一个代码。但是你这个方法你不想让任何人去调,不想公开它,那就给他私有化,你这个方法可能只是一个工具,只是一个公共的代码,然后你在下边的方法里边是公共的,对吧?公共的方法里边可能需要去调用这些私有的方法。明白吧,啊,需要调用这些私有的方法,你这个私有方法只供你自己使用,就只供你在本类中,你自己用这个东西,那这个时候的方法你就可以给他搞成私有的,这样的话,哎,就可以避免什么外边人去访问了呀啊。
01:05
如果那么容易访问和修改,就不叫私有了。供本类的静态方法、默认方法调用。对,有道理啊,Private修饰就是给给自己用的,给自己用的不让不公开啊,不开我有一个小秘密,不公开啊,就这意思。好了,那这样的话,咱们这个。呃,叫做方法覆盖这块啊,遗留的这两个问题,一个是私有方法,一个是静态方法,我们就说明白了,那么当时还有遗留的一个问题啊。我们把这个遗留问题解决了之后呢,我们就可以呃往下看super了,各位啊,还有什么问题呢?就是关于在什么呀,在方法覆盖中,关于方法的什么返回值类型来这个是谁提的,还记得吗?打个一来打个一,谁提的,关于方法的反馈类型。
02:03
什么条件满足之后。我记得有同学提这个提这个问题了啊,什么条件满足之后,会构成会构成方法的覆盖呢。哦,小鹏是吧,小鹏行什么条件满足之后会构成方法的覆盖呢?呃,条件一。是什么呀,是。方法覆盖条件一是什么呢?必须要求两个类之间具有什么呀,继承关系。啊,或者说发生在具有继承关系的两个类之间啊,发生在具有继承关系的,发生在具有继承关系的两个类之间。然后呢,是什么呢?是父类中的方法和子类。覆盖之后或者此类重写之后的方法具有相同的,哎,方法名相同的。
03:09
形式参数列表相同的返回值类型啊,相同的返回值类型,那么关于这个返回值类型可以不相同吗?就是追究到细节上,我们学习了多肽,就学习了多肽机制之后。反相同的反馈类型。这句话。可以修改一下吗?我们做一个测试,各位啊,做一个测试来,在这呢,我们点右键,我们新建一个什么叫over over啊TEST07,所以这块的东西啊,其实就相当于说讲了后边就去把前面的东西呢,我们再来。这个解决一下啊,解决一下来,Public class overwe test 07public static VO。
04:17
好了,那么。有点疑问是吧,来,那你比如说现在啊,在这呢,有个class,我们叫animal。啊,然后呢。嗯,我们在这里呢,有一个class叫KK呢去继承谁呢?Animal啊继承animal,然后接下来在这里呢,有个方法各位看好了啊,这个方法呢,我随便就随便写个方法啊,这个方法返回int。返int,返回int之后呢,接下来我这个方法就叫什么,就叫萨马求和啊,这个这个方法挺有意思啊,在an里面有个求和啊,这个有点尴尬啊,有点尴尬,找不到合适的例子,就先这么着了啊,就是这样一个父类,这样一个子类,然后在负类里边有这样一个方法啊,然后接下来直接return谁呢?A加B就行了,这很正常,那么接下来把这个代码拿过来,拿过来之后呢。
05:10
我放到这儿,假如说上面的返回的是个double,我下边能不能返回int呢?能不能?行不行?就我我这是我重写,我重写上面是double,我我用int,我返回int。就你之前重启之前我可以返回double吗?Double容量大是不是,Int容量小是不是,哎,我重启的时候我返回int行吗?可以返回比负类小的返,返回类是这样吗?小鹏。来我们编译一下好吧。来看一看啊,Java c编译o test07。点吧。
06:00
好大,大家看第十五行是不是错误了?是不是,哎,所以。不行,返回类型int与double不兼容。不行啊,这个是错误的。啊。他告诉你第十五行嘛,刚才是第十五行是在这儿。啊,这个是不行的,是不允许的,不能这么干啊,也就是说你这块其实你要做只能返回什么,只能返回没办法,你的返回类型只能是double啊来我们再编译你看就没问题了。是不是啊就没问题了,那有同老师,那是不是这个问题。我现在呢,返回的是一个什么呀,是一个long类型。然后我在这返回一个int行不行呢。
07:00
我返回int行不行,是不是整数的问题,来我们再看一下还是不行啊,你这是long类型,这是int,来看一下行不行走。说int与不兼容。看见了吗?掉个头。掉什么头?你想掉什么头?这还是不行,还是不行啊,所以说。自动转就行,强转就不行,啥意思?你想干啥?我还没有讲引用呢,我是在讲基本数据类型,别着急啊,别着急一会儿呢。哦,互换个位置是吧。互换位置,我们测一下行不行测一下啊,我们现在的上边用什么呢。我们上边假如说我们用int行吧,然后下边呢,我们用long行不行。来,我们用一下浪啊。下边我们用下浪。
08:03
行吧,来,我们来编译一下走。好,大家看反馈类型,Long与int不兼容。对不对,哎,所以说这块呢,大家注意啊,这个不行,明白吗?哎,这个也不行,同样的同样的啊。这边的一个错误原因是什么?就是这个原因。啊,这个原因。无法覆盖。啊,这个K中的some就这个。无法覆盖animal中的sum。所以这块我先提个醒,各位啊,先提醒,所以这块相同的返回类型可以修改一下吗?对于返回值类型是基本数据类型来说,必须一致。啊,但如果说你要是对于引用数据类型来说呢。
09:03
我们可以测试一下引用数据类型,好吧?测一下引用注释掉啊,大家看了我这个类里边是不是什么代码也没有,我这个类里边大家看是不是什么代码也没有,我这是一个父类,我这是一个子类吧。是吧,哎,子类啊,大家看好了,我在这儿呢,再写一个class,这个class叫什么呢?我起个什么样的名啊,想想。嗯,就叫my class吧,随便写一个啊。嗯,My class1。然后里边有一个方法,大家注意注意听啊注意听,这个方法呢,它返回一个什么呢?Animal。啊,叫get animal。我先return一个on各位啊,好,这个作为负类各位啊,然后呢,这是一个方法,接下来我对这个方法进行重写。
10:03
此类啊。子类这块呢,是my class2去继承谁啊?继承我们的my class1子类继承父类,在这里尝试重写父类的,父类的方法,重写这个方法,我们把这个方法拿过来,然后放到这里。放到这里之后呢,接下来我重启的时候啊,我的返回值类型我写什么呢?我写不返回animal了,我返回一个K行不行。当然,我要返回一个animal,那肯定没问题啊。是不是因为你父类是这样写的,子类麦克CLASS2去继承父类之后,我在这里呢,返回值这个类型。和这个一样啊,这个和这个一样啊,行参一样,那没问题啊,来编译一下。零七走好,大家看没问题是不是,那如果说现在我复类方法这样写,我重写方法的时候,我给他重写方法的时候,我不这么写了,我故意把这个返回值类型给它变小。
11:12
变小,把它变成K行不行呢?我们来尝试一下,编译一下。好,大家看是不是没问题啊。是没问题。哎,没问题啊各位。好,那我问大家。就我们经过测试得出这个结论就行了,各位啊,知道就行了,拿过来,那如果这个位置写一个object呢。行不行?各位,就原先它父类的方法是一个animal。这是返回值类型变小,重启的时候,重写的时候返回值类型。由什么由animal变成了,变成了K变小了,这个是可以Java中允许吧,是不是,那这个object呢?重写的时候返回值类型。
12:16
返回,返回值类型由什么呢?由这个animal变成了。Object变大了,这个可以吗?它object的范围是不是稍微大一些啊?好,我们来看看编译。好看就不行了,是不是说object类型animal不兼容?对吧。哎,所以这块的话,咱们要注意啊,这就覆盖不了了,这个就是不行的。是可以吗?不行,Java中不允许啊,不行,Java中不允许,不允许你这样去复写或者是覆盖。你按照上面这个方式可以原封不动的方式,你按照这种方式也可以,我跟大家说一下啊,大家就在这折腾吧,我告诉你以后我们都是这样的,就是一般父类中怎么写,直接咔嚓复制CTRLC,然后CTRLV,我们肯定不会去动它的类型,语法上我该给大家讲,我给你讲到,但是我告诉你这没有用啊,听了也没有用,有用吗?没有用,我告诉你,因为我。
13:22
开发这么长时间,我也没见说在重启的时候吧,把类型变小一点。没有意义啊,没有意义,就是你直接把复制粘贴你会吧。啊,你就但是你可以这样去,可以这样写,Java语法上规定没有任何问题,经过我们测试也是允许啊,啊也是允许的啊,就你不要去研究一些没有意义的一个问题啊,这个问题价值不大啊,价值不大就是一般我们重启的时候是原模原样复制粘贴的啊,我这个放里没写东西啊,一般重写的时候。都是复制粘贴啊,复制粘贴不要动啊,不要改不要改啊。
14:02
好,那么这块呢,是关于咱们课堂上的一些疑问啊,我在学习了多肽这个内容啊之后,我在这里给大家解答了一下我们之前遗留的这些问题啊,遗留这些问题对于返回值类型是基本数据必须一致啊,对于返回值类型是引用数据类型来说。重写之后,返回值类型,返回值类型可以变得更小啊,但意义不大啊,写上啊,但意义不大啊,实际开发中没人这样写啊,没人这样写行了,这块呢,我们就研究到这儿,咱们呢还是老规矩啊,休息一下好吧,休息一下。
我来说两句