子类实例化父类引用

jackyBlithe 2015-11-05 10:51:07
super是父类,sub是子类
sub里面有方法p(),父类里面没有p()方法

然后子类实例化父类引用

super A = new sub()中

请问为什么

A.p() 会报错?



原题目如下:














...全文
98 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
TheBigBangWOW 2015-11-06
  • 打赏
  • 举报
回复
调用方法的时候,先找本类,没有就往上找,不会往下找的
jackyBlithe 2015-11-06
  • 打赏
  • 举报
回复
引用 5 楼 lonrence 的回复:
[quote=引用 4 楼 ouwei33的回复:][quote=引用 3 楼 lonrence 的回复:] 因为A声明的是super类,编译器会在其声明的类中寻找匹配的方法,没有的话会向其父类中寻找,找不到的话报错。
是不是可以理解为 类名A.方法名P() 的语句,java编译器都是先找A类里面有没有方法P(),如果没有就往上找父类,父父类等,而不会往下找子类是否有p()方法[/quote] 是的2020202020[/quote] 谢谢^_^,又学习了
  • 打赏
  • 举报
回复
引用 4 楼 ouwei33的回复:
[quote=引用 3 楼 lonrence 的回复:] 因为A声明的是super类,编译器会在其声明的类中寻找匹配的方法,没有的话会向其父类中寻找,找不到的话报错。
是不是可以理解为 类名A.方法名P() 的语句,java编译器都是先找A类里面有没有方法P(),如果没有就往上找父类,父父类等,而不会往下找子类是否有p()方法[/quote] 是的2020202020
jackyBlithe 2015-11-05
  • 打赏
  • 举报
回复
引用 3 楼 lonrence 的回复:
因为A声明的是super类,编译器会在其声明的类中寻找匹配的方法,没有的话会向其父类中寻找,找不到的话报错。
是不是可以理解为 类名A.方法名P() 的语句,java编译器都是先找A类里面有没有方法P(),如果没有就往上找父类,父父类等,而不会往下找子类是否有p()方法
  • 打赏
  • 举报
回复
因为A声明的是super类,编译器会在其声明的类中寻找匹配的方法,没有的话会向其父类中寻找,找不到的话报错。
搬运工木木 2015-11-05
  • 打赏
  • 举报
回复
因为你 A 定义成 super ,那么只能调用super的方法(如果不强制转型的话)
搬运工木木 2015-11-05
  • 打赏
  • 举报
回复
因为你 A 定义成 super ,那么只能调用 A的方法(如果不强制转型的话)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧