我需要一个对象B,但是当我执行'B.GetByID()'时我得到一个对象A.
public class A
{
public A()
{
}
public static A GetSelf()
{
return new A();
}
public static A GetByID()
{
return GetSelf();
}
}
public class B extends A
{
public B()
{
super();
}
public static B GetSelf()
{
return new B();
}
}
B.GetByID(); //returns A, i need B
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 12
你只能做到这一点的也创造了B GetByID()在方法B.虽然这有点难看......
基本上你的B.GetByID()电话将被解决A.GetByID(); 编译代码中的任何内容都不会表明它最初是B.GetByID(),并且无论如何都将解析对GetSelf()内部的调用.GetByID()A.GetSelf()
基本上,静态方法不允许以您希望的方式进行多态化.我建议你创建一个AFactory和一个BFactory子类,并使用实例方法以正常方式使用方法覆盖.
| 归档时间: |
|
| 查看次数: |
1121 次 |
| 最近记录: |