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 阅读 10 次 更新于 2025-07-20 13:14:14 我来答关注问题0
  •  竹边路 java最后输入System.out.println("a="+a+",b="+b);那么括号中是啥意思,请高手解答一下,我这里先谢谢了,

    首先System.out.println() 这个方法是将括号内的字符串打印到console窗口上,并换行 此外,你需要知道对于字符串来说,“+”是串接两个字符串的意思 而这里没有用引号括起来的 a 和 b 不是表面上单纯引用变量而已,而是隐式转换成字符串(即调用了toString()方法):"a="+a+",b="+b 其实是 ...

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

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

  •  电脑的老巢 代码一二的输出结果是什么为什么!求java大神

    最后:b[0][3] = 40,a[1] = 7

  •  BestselfEP8ey java scannner 不能输出最后一行

    肯定不会输出最后一个啊 ,当到最后一个的时候,scanner.hasNextLine()已经是NULL了,当然不会输出了,不要用while判断即可!

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

Java相关话题

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