暂无权限

加入尚新途,才有权限看这些视频哦!

点击前往
×
问答
嘎嘎嘎?
1楼

欸嘿,第一次分享学习笔记,希望同学们不懂的能看懂!
在此感谢高淇老师和蔚老师的指导o(* ̄▽ ̄*)ブ~
多态剖析-导出 (2).png

尚新途

很棒。

外桑
2楼

老师,想问下,这里已经变成了Animal类型了,既然还可以调用前面的Dog的shout方法却不可以调seeDoor方法,难道Dog类的shout方法和seeDoor类型不一样吗?

image.png

尚新途

这里a的类型时Animal,这个类中只有shout方法。

逍遥书生
3楼

为啥这里狗可以转型而猫不能转型呢?不都是animal的子类吗?而且都是拿animal的对象转的

image.png

尚新途

image.png

4楼

老师,这个转型了之后下面的方法还是不能用Dog 自己的方法,但是上面可以用,这是为什么

image.png

尚新途

上面转型了,可以使用转型后的对象来调用方法。你现在写在方法内部,用的是参数a,他并没有转型,所有不能调用的

Tಥ_ಥT
5楼

老师这个转型应该怎么理解,对象还有类型区分吗

image.png

尚新途

现在学习的是多态的技术,也就是父类引用类型指向了子类引用对象,多态的前提是建立在继承上的,在子类继承了父类时,可以重写父类的方法来实现子类特定的方法实现,这时候呢,运行的流程是,编译看父类,执行看子类。


至于,父类 与 子类之间的转换呢,因为父类类型的引用 不能调用子类 独有的方法,所以需要调用子类的独有方法时,需要向下转型成子类对象


类型呢是一个类(也叫模板) 对象呢是一个类的实例化,是具体干活的

尚新途

谢谢老师! 老师太牛了每次只需要几句话就解释得清清楚楚的,还变相加深了我对  对象的的了解,太感谢了!

尚新途

你也很棒,仔细的读了和理解了老师的每一句话,很棒

【给生活比个叶】
6楼

老师,看下我这个怎么转型不了呢,哪里的错呢?
image.png

尚新途

你怎么能把一个Animal1的类转成Dog1类型

你可以把Animal1换成a1试试

可乐先生
7楼

图片.png像这种把b再次强制转型为什么会报错呢

尚新途

animal转换成dog是因为animal是dog的父类,直接可以转换,而dog和cat直接是没有关系的,他们都是animal的子类,一个狗转换成猫是不行的。

siufat
8楼

老师你好,请问为什么狗和猫都是同级的对象,也就是都是animal的子类,为什么可以向下强制转型为dog,但是却不能向下强制转型为cat呢?

尚新途

微信已回复

我爱学习
9楼

image.png

老师 a instanceof Dog  ,如果为真,a就是Dog类型,执行的语句为什么还要进行转换,Cat也一样

尚新途

对,向下类型转换就得强转。而向上类型转换是自动的,不用这么写。

西秋
10楼

老师,我想问下 为什么要有向下转型 ,子类创建对象然后调用特有的方法不是也可以吗

意未央
11楼

image.png

是不是因为最新的JDK,这种强转,编译器能识别到了

尚新途

image.png 应该是 a

宏刚小神
12楼

StringBuffer str = (StringBuffer) obj;


老师,例子里的这句话,有什么不对吗?这个向下强制转换是什么地方出错的呢?

尚新途

String和StringBuffer之间不可以强制转换。如果你要转为StringBuffer,你可以通过new StringBuffer对象,通过构造方法去转换。

Lucas
13楼

程序真正跑起来是什么类型,就调用什么类型的方法。怎么理解这句话?

意思是这样吗:我有一个父类的引用指向子类的变量,这个引用实际上是child类型,是只可以用child类型的方法么?还是只能用父类型的方法和属性。

尚新途

new前面这个是你new的对象的类型,使用多态,程序是不知道你是什么类型的,只有当idea run了只有,系统才知道你这个对象是什么类型的,调用的时候只能调用new前面这个类型的方法。

我有一个父类的引用指向子类的变量,这个引用实际上是child类型,是只可以用child类型的方法么?还是只能用父类型的方法和属性。

对,引用指向子类,只能调用父类的方法和属性,调用子类重写的方法,输出的是子类的方法。

尚新途

向上转型时 子类会遗失除与父类对象共有的其他方法;可以用向下转型在重新转回,但是如果是同名属性呢,为什么我在idea里面测试的时候,父类引用指向子类的对象后,会丢失原本的属性,向下转型后也没有办法恢复。比如,父类age 40 子类 age 10,结果向上转型也好乡下也好,都是40

尚新途

有关于接口。

接口里面是只有抽象的方法一定要去实现吧,而默认方法重写不重写无所谓的吧?

尚新途

代码能给我发一下吗

接口里的抽象方法只有被别的类实现了,就需要被重写。默认方法可以重写,也可以不重写。

Danny
14楼

既然类型会转换错误,请问怎么才能同时输出狗看门和猫抓老鼠的动作呢?

尚新途

输出这些东西,和类型转化没有关系

T.S
15楼

问题.png

老师,能帮忙画一下红框部分的内存分析图吗?

尚新途

image.png

自我检测(5S)