关于课程的一些小问题

关于课程的一些小问题

老师你好,听完课之后,我有几个小问题想问下:

1、既然static修饰的父类方法不能被子类重写,那final修饰的父类方法同样也不能被子类重写,那区别在哪呢?

2、如果想向下转型,在此之前,是不是要经过了向上转型后才能进行进行向下转型?例如:

1
2
3
4
5
Animal 是父类
Cat是子类
Animal a1=new Animal;
Cat c1=new Anilmal;//这样算是向下转型吗?可以这样做吗?
Cat c2=(Cat)a1;//或者可以这样做吗?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

再回到static与final修饰的父类方法的区别上,static属于类中的方法。你可以直接调用类名.static修饰的方法,而final修饰则不行。他们刚好对于子类的重写上是一致的,但本质上是有区别的。

  • MasonM 提问者 #1
    还有有点疑问: 1:static和final修饰的父类方法是否都不能被子类重写? 2:你说的final则不行是什么意思,final修饰的方法不能通过类名.方法名去调用吗?
    2018-08-14 12:14:52
  • 好帮手慕雪 回复 提问者 MasonM #2
    1)对,static和final修饰的父类方法都不能被子类重写。2)final修饰的方法是不能通过类名.方法名去调用的。你可以去试一下,运行一下什么都知道了。
    2018-08-14 13:51:06
提问者 MasonM 2018-08-14 11:18:34

http://img1.sycdn.imooc.com//climg/5b7249cc0001d16807630364.jpg

http://img1.sycdn.imooc.com//climg/5b7249c50001309406330346.jpg

http://img1.sycdn.imooc.com//climg/5b7249cc00012a8d05250367.jpg

老师你看,这样是会报错的,视频里面也是这样的。


  • 我刚刚的描述的不准确。应该说子类与父类可以有同样的static修饰的同个方法。但子类不能增加@Override。其实增加了@Override也就是重写了是吧。
    2018-08-14 11:50:35
  • 提问者 MasonM 回复 好帮手慕雪 #2
    嗯嗯好的谢谢老师
    2018-08-14 12:22:23
好帮手慕雪 2018-08-14 10:38:48

1)static修饰的父类方法是可以被子类重写的。2)第4行是错误的,本身语法就是错误的。第5行语法没错,但运行时会报错,因为a1是new 的Animal。你如果改为Animal a1=new Cat();然后Cat c2=(Cat)a1;是没有问题的。祝:学习愉快

  • 提问者 MasonM #1
    好的谢谢老师,但是我看视频里面老师说,static修饰的父类方法是不能被子类重写的呀?
    2018-08-14 11:11:42
  • 提问者 MasonM #2
    我在新的回答有static修饰父类方法而子类无法重写的演示,请老师解答一下,谢谢老师!
    2018-08-14 11:16:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码