【问题标题】:Use Overriden method使用覆盖方法
【发布时间】:2014-01-22 23:01:20
【问题描述】:

我想知道,在这个例子中如何:

public class Test
{
    public int getA()
    {
        return 1;
    }
    public static class Test2 extends Test
    {
        @Override
        public int getA()
        {
            return 2;
        }
    }
    public static void main(String[] args)
    {
        Test2 a = new Test2();
        System.out.println(a.getA());
    }

我可以得到 1 作为结果吗? 有什么办法吗?获取测试方法对我很有用。

【问题讨论】:

  • 这就是多态性的基础。你需要写Test a = new Test(); 来获得你想要的东西......你可能应该解释你需要这种行为的场景:可能有更好的方法......
  • 如果您想同时访问基类和继承的实现,请不要覆盖。也许您希望 Test 拥有一个具有不同签名的方法,该方法执行 getA() 现在所做的事情。

标签: java class methods overriding


【解决方案1】:

当 Test2 的 getA() 根据您的规范返回 2 时,为什么要获得 1?似乎违反直觉。不,没有办法,因为返回 2 而不是 1 是首先要覆盖的点。

【讨论】:

  • 好的,谢谢我想知道的一切。感谢您的快速答复
【解决方案2】:

如果你想得到 1 作为结果,你应该实例化 Test 而不是 Test2

Test a = new Test();
System.out.println(a.getA());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-23
    • 2010-12-28
    • 2022-01-23
    • 2011-11-03
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多