java的一些关于类的继承问题,如下求高手指教

2024-12-26 23:21:37
推荐回答(5个)
回答1:

经验证分别 输出11和110 并不是你说的都是11
都是98.0是因为,两次的计算其实都是调用B的f方法,尽管向上引用为A,java在真正执行的时候会动态的获取真正的对象,所以两次都是98.0
只属于为什么是9,因为静态方法是通过类名调用的,也就是说方法属于类而不是对象,所以
A a=new B() 的时候 a.g(3) 其实是调用了A.g(3),
如果你使用B.g(3) 那么就会输出12

回答2:

你的结果有一个错误,
a=new B(); System.out.println(a.getNumber(10)); } //代码2 为什么结果还是11 ??

这里结果应该是110,调用的是B的getNumber的方法

类E中

System.out.println(a.g(3)); //结果怎么是9 怎么调用的

方法g是static的,静态方法属于类不属于对象,所以a.g(3)=A.g(3),而b.g(3)=B.g(3),所以两次调用的结果不同

回答3:

你的疑问应该在於这里
System.out.println(a.f(10.0,8.0)); //为什么结果还是98.0
你可以看看他的指向
先指向B.class f 然後再指向A.class f
所以是 10.0 +8.0 =18.0
然後回到 B.class
m=18.0 看看回传 m+x*y
也就是 18+10.0*8.0
这样当然是 98.0 =="
再来看这个
System.out.println(a.g(3)); //结果怎么是9 怎么调用的
先指向B.class g 然後在指向 A.class g
所以是 3*3 =9
然後回到B.class
因为这里的B.class g 方法被复写掉所以就跳过回传直接使用A.class g

回答4:

扯淡 第一个的第二个明明就是110 动态绑定 自己百度下 父类引用指向子类对象,可见性是按照声明的时候来的 调用的时候如果有重写就是掉子类的方法

回答5:

本视频主要从Java语言基础、JavaSE核心、WEB全栈及数据库、Servlet/Jsp核心、 Java框架五个阶段进行讲解。在本教程中,会让大家从零基础快速掌握Java知识。想要配套学习资料的小伙伴可以联系我哦!