Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用重写方法_Java_Class_Methods_Overriding - Fatal编程技术网

Java 使用重写方法

Java 使用重写方法,java,class,methods,overriding,Java,Class,Methods,Overriding,我想知道,在这个例子中: public class Test { public int getA() { return 1; } public static class Test2 extends Test { @Override public int getA() { return 2; } } public static void m

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

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吗?
有什么办法吗?获取测试方法对我很有用。

当Test2的getA()按照您的规范返回2时,为什么要获取1?这似乎违反直觉。不,这是不可能的,因为首先要重写的是返回2而不是1。

当Test2的getA()按照您的规范返回2时,为什么要获取1?这似乎违反直觉。不,这是不可能的,因为首先要重写的是返回2而不是1。

当Test2的getA()按照您的规范返回2时,为什么要获取1?这似乎违反直觉。不,这是不可能的,因为首先要重写的是返回2而不是1。

当Test2的getA()按照您的规范返回2时,为什么要获取1?这似乎违反直觉。不,这是不可能的,因为返回2而不是1首先是重写的点。

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

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

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

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

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

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

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

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

这就是多态性的基础。您需要编写
testa=newtest()要得到你想要的。。。您可能应该解释您需要这种行为的场景:可能有更好的方法……如果您想同时访问基类和继承的实现,请不要重写。也许您希望
Test
拥有一个具有不同签名的方法,该方法执行
getA()
现在所做的操作。这是多态性的基础。您需要编写
testa=newtest()要得到你想要的。。。您可能应该解释您需要这种行为的场景:可能有更好的方法……如果您想同时访问基类和继承的实现,请不要重写。也许您希望
Test
拥有一个具有不同签名的方法,该方法执行
getA()
现在所做的操作。这是多态性的基础。您需要编写
testa=newtest()要得到你想要的。。。您可能应该解释您需要这种行为的场景:可能有更好的方法……如果您想同时访问基类和继承的实现,请不要重写。也许您希望
Test
拥有一个具有不同签名的方法,该方法执行
getA()
现在所做的操作。这是多态性的基础。您需要编写
testa=newtest()要得到你想要的。。。您可能应该解释您需要这种行为的场景:可能有更好的方法……如果您想同时访问基类和继承的实现,请不要重写。也许您希望
Test
拥有一个具有不同签名的方法,该方法执行
getA()
现在所做的操作。好的,谢谢我想知道的一切。谢谢你的快速回答好的,谢谢我想知道的一切。谢谢你的快速回答好的,谢谢我想知道的一切。谢谢你的快速回答好的,谢谢我想知道的一切。谢谢你的快速回答