如何 return 子 class 对象而不是基础 class 对象
How to return child class object intead of base class object
abstract class B
{
}
public abstract class A
{
public abstract B createBInstance();
}
public class C extends A {
@Override
public D createBInstance() {
return new D;
}
}
哪里
public class D extends B
{
}
这给出了一个编译器错误,指出试图使用不兼容的 return 类型。我不能这样做吗?有什么建议可以避免这个错误吗?
我已经复制了您的代码,并 运行 使用 Java jdk8u45 复制了它,它工作得很好。换句话说,当覆盖一个方法时,可以将 return 类型更改为原始 return 类型的子类。
另请参阅:Can overridden methods differ in return type?
但是您的代码中有一个小错误,应该是:
public class C extends A {
@Override
public D createBInstance() {
return new D(); //forgot parenthesis
}
}
希望我能帮到你,
最佳 Y
abstract class B
{
}
public abstract class A
{
public abstract B createBInstance();
}
public class C extends A {
@Override
public D createBInstance() {
return new D;
}
}
哪里
public class D extends B
{
}
这给出了一个编译器错误,指出试图使用不兼容的 return 类型。我不能这样做吗?有什么建议可以避免这个错误吗?
我已经复制了您的代码,并 运行 使用 Java jdk8u45 复制了它,它工作得很好。换句话说,当覆盖一个方法时,可以将 return 类型更改为原始 return 类型的子类。
另请参阅:Can overridden methods differ in return type?
但是您的代码中有一个小错误,应该是:
public class C extends A {
@Override
public D createBInstance() {
return new D(); //forgot parenthesis
}
}
希望我能帮到你, 最佳 Y