java - Java程序的输出

标签 java oop

我是一个Java初学者。 谁能解释一下为什么它打印输出2?

interface Foo {
    int bar();
}

public class Beta {
    class A implements Foo {
        public int bar() {
            return 1;
        }
    }

    public int fubar(final Foo foo) {
        return foo.bar();
    }

    public void testFoo()// 2
    {
        class A implements Foo {
            public int bar() {
                return 2;
            }
        }
        System.out.println(fubar(new A()));
    }

    public static void main(String[] args) {
        new Beta().testFoo();
    }
}

最佳答案

那是因为您在这里重新定义了A类:

    class A implements Foo {
        public int bar() {
            return 2;
        }
    }
    System.out.println(fubar(new A()));

因此,当您执行 return foo.bar(); 时,您将返回 2

关于java - Java程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5871754/

相关文章:

python - Python 中的通用类工厂

java - 解析 Microsoft CRM Web API 返回的 Odata 值

java - Spring Webflux - 如何使用 Tuple3 将三个 Flux 对象聚合为 1

java - ASTVisitor 类定义节点

c# - 如何更好地减少类依赖性以便更容易对其进行单元测试

design-patterns - 三个类似的 API - 最佳设计模式?

Java 对象和类初学者

java - 如何读取xsi :type with java annotations

java - 使用哪种设计模式(主动和被动方法)?

java - 两个对象之间共享模型