继承的问题,经典题型

屌丝Java 2018-02-15 07:18:57
先看图
图1我怎么合并不了,合并出来的图2无法编译。还有就是图1的结果为什么是0.
根据视频解说是,创建子类对象,去构造父类,父类构造函数,子类复写了父类的函数,所以父类的函数不执行,然而父类没有构建对象,所以无法去调用子类的复写函数。父类没有对象,父类的函数不执行。然而在new之类的情况下,又说子类没有对象,说子类没有值,所以打印出0,基本上原话。不知道哪位高手解答一下
...全文
639 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
学习了!感谢!!!
qq_40996093 2018-02-16
  • 打赏
  • 举报
回复
图1结果为0的情况是这样的,在实例化的时候首先是定义了属性,但是没有赋值,要先调用构造之后才进行属性赋值,这里的情况是在调用B的构造时会去调用A的构造,A的构造会去调用eat方法但是eat方法子类复写了,所以此时执行B中的eat方法,但是此时i是没有赋值的所以显示int的默认值0。 图2中首先在一个java文件里面不能有两个public修饰的类,然后因为你把A,B两个类都定义在了继承这个类中,所以属于内部类,然后main方法是static修饰的,所以不能调用类中的非static修饰的类,所以解决方案,首先去掉类A的public修饰符,然后给A和B类加上static修饰符就可以了。
屌丝Java 2018-02-16
  • 打赏
  • 举报
回复
但是倒过来写就出现0
屌丝Java 2018-02-16
  • 打赏
  • 举报
回复
为什么我照你的代码能编译,但是不能运行 ---------- java运行 ---------- java.lang.NoSuchMethodError: main Exception in thread "main" 输出完成 (耗时 0 秒) - 正常终止
zmy244 2018-02-15
  • 打赏
  • 举报
回复

我开始只看到了错误,这就是你说的0了
zmy244 2018-02-15
  • 打赏
  • 举报
回复

是你写错了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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