代码4为什么是9
2条回答 默认 最新
- 诗人在流浪 2021-10-28 22:16关注
对于多态总结一下
一、使用父类类型的引用指向子类的对象;
二、该引用只能调用父类中定义的方法和变量;
三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中 的这个方法;(动态连接、动态调用)
四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父 类中的变量,那么在编译时会报错。A a = new B();这是java典型的三大特性之一多态,父类的引用指向子类
父类中的g方法静态方法,虽然子类中也有静态的g方法,但是子类不会重写父类的方法,
所以代码4调用的还是父类中的方法.如果父类和子类的方法都修改成非静态,则子类会重写父类的g方法,则会调用子类的g方法
测试代码如下:public class E { public static void main(String[] args) { B b = new B(); System.out.println(b.f(10.0,8.0)); System.out.println(b.g(3)); A a = new B(); System.out.println(a.f(10.0,8.0)); System.out.println(a.g(3)); } } class A { double f(double x, double y){ return x+y; } int g(int n){ return n*n; } } class B extends A{ double f(double x, double y){ double m = super.f(x,y); return m+x*y; } int g(int n){ //int m = A.g(n); return n; } }
测试结果:
98.0
3
98.0
3本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 孟德尔随机化结果不一致
- ¥15 深度学习残差模块模型
- ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
- ¥15 差动电流二次谐波的含量Matlab计算
- ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
- ¥15 C#如何调用串口数据
- ¥15 MATLAB与单片机串口通信
- ¥15 L76k模块的GPS的使用
- ¥15 请帮我看一看数电项目如何设计
- ¥23 (标签-bug|关键词-密码错误加密)