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()
现在所做的操作。好的,谢谢我想知道的一切。谢谢你的快速回答好的,谢谢我想知道的一切。谢谢你的快速回答好的,谢谢我想知道的一切。谢谢你的快速回答好的,谢谢我想知道的一切。谢谢你的快速回答