当前位置: 首页 > 面试题库 >

需要Java代码段输出说明

仲孙绍元
2023-03-14
问题内容

我的代码是:

class Foo {
  public int a=3;
  public void addFive() {
    a+=5;
    System.out.print("f ");
  }
}

class Bar extends Foo {
  public int a=8;
  public void addFive() {
    this.a += 5;
    System.out.print("b ");
  }
}

public class TestClass {
  public static void main(String[]args) {
    Foo f = new Bar();
    f.addFive();
    System.out.println(f.a);
  }
}

输出:

b 3

请向我解释一下,由于该方法已被覆盖,为什么这个问题的输出是“ b 3”而不是“ b 13”?


问题答案:

您无法在Java中覆盖变量,因此实际上您有两个a变量-一in Foo和in in
Bar。在另一方面addFive()的方法是多态的,因而它修改Bar.aBar.addFive()被调用时,尽管静态类型的f存在Foo)。

但最终你访问f.a这个参考使用已知类型的编译过程中解决了f,这是Foo。因此Foo.a从未被感动。

Java中的BTW非最终变量 绝对 不能公开。



 类似资料:
  • 问题内容: 我有一段我想缩短的代码… 我一次又一次地添加新的标志权限感到非常恼火,我需要做几次,是否有一个较短的方法可以将所有标志放在同一个定义中? 让我这样说吧,我可以这样做吗?(当然这会产生错误,但是类似。) 问题答案: 如果与C#的语法相同,并且标志设置正确,则可以执行以下操作:

  • 本文向大家介绍JAVA输出流与输入流代码实例,包括了JAVA输出流与输入流代码实例的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了JAVA输出流与输入流代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 输出流 编程入门的第一个程序,输出一串字符串 输入流 输入流需要引用包的概念,包里面存放的是类。输入流需要实例化InputStr

  • 本文向大家介绍java实现输入输出流代码分享,包括了java实现输入输出流代码分享的使用技巧和注意事项,需要的朋友参考一下 1,编写一个程序,读取文件test.txt的内容并在控制台输出。如果源文件不存在,则显示相应的错误信息。 2,编写一个程序实现如下功能,从当前目录下的文件fin.txt中读取80个字节(实际读到的字节数可能比80少)并将读来的字节写入当前目录下的文件fout.txt中 3,使

  • 在方法或类范围内,下面的行编译(带有警告): 在类作用域中,变量获取其默认值,以下给出未定义引用错误: 这难道不是第一个应该以相同的未定义引用错误结束吗?或者第二行应该编译?或者我错过了什么?

  • myusername hi%cd/users/myusername/desktop/programming/hi/library/java/javavirtualmachines/jdk-15.0.1.jdk/contents/home/bin/java-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:5