java代码最后一个输出为什么是9不是12?

也就是覆盖了父类的f函数.因此结果一样都是98.0 而子类中的g函数因为是静态函数,虽然其参数与父类中的静态g函数一样,但是分别是两个函数,在子类中没有被重写,所以在最后一个输出中调用的是父类的g函数,输出9.也就是说静态函数是不会被重写的,覆盖的.g...
java代码最后一个输出为什么是9不是12?
子类中的f函数因为与父类中的f函数参数一样,所以我们说子类的f函数重写了父类的f函数,也就是覆盖了父类的f函数.因此结果一样都是98.0
而子类中的g函数因为是静态函数,虽然其参数与父类中的静态g函数一样,但是分别是两个函数,在子类中没有被重写,
所以在最后一个输出中调用的是父类的g函数,输出9.也就是说静态函数是不会被重写的,覆盖的.

2020-10-07
g是一个静态方法,对于静态方法,调用哪个方法是在编译时根据变量的类型绑定的,而不是运行时绑定的。a的类型是A,所以调用的是A.g,返回的是3的平方9。

补充:
如果有A a2=null;那a2.g(3);也会返回9。理由上面讲了。2020-10-07
mengvlog 阅读 128 次 更新于 2025-09-10 02:01:41 我来答关注问题0
  • 所以在最后一个输出中调用的是父类的g函数,输出9.也就是说静态函数是不会被重写的,覆盖的.

  •  jacky_tsy JAVA arraylist。为什么我的list在上半部分输出正常,在下半部分的输出就全部变成了最后一条数据?

    因为你的list里面全部装的都是最后一条数据,你上部分输出正常是因为你是每次add就输出你add的值,如果你在上部分遍历一下list就会发现list里面的值全部是一样的。原因:list.add(res)时,res改变,list里面所有存的res值都会改变,因为res的地址相同。如果你想要值不同把String[] res = new String[...

  • } System.out.println ("[输出] " + line );当while循环readLine出所有行结束时,最后一行的值就是line,这时候你输出line就可以了~while循环的这个过程是必须的,虽然while内部并未执行任何操作。

  • 另一种方法是使用字符数组。同样以"snasdss"为例,可以通过以下代码实现:String str = "snasdss";System.out.println(str.toCharArray()[str.toCharArray().length - 1]); // 输出 "s"首先将字符串转换为字符数组,然后访问数组的最后一个元素。这种方法直接获取最后一个字符,简单直观。这两种方法...

  •  67918334 求解:Java LinkedList<自定义类> 输出全部都是最后一个元素

    而这个循环的作用只是把这个aaa对象的值变来变去,linkedList 里面存放的是同一个对象,放了三次。结束后,这个对象的值,就是aaa最后的值,它的name是2,跟下面的循环没什么关系 ,要想达到你要的效果必须这样:AAA aaa = new AAA();for(int i=0;i

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部