将 Super Class 转换为 Sub Class
Casting a Super Class in to a Sub Class
我有一个 class 看起来像:
public class MySuperClass
{
public void PrintValue()
{
print("SUPER Class");
}
}
然后我有另一个 class 看起来像:
public class MySubClass : MySuperClass
{
public void PrintSubValue()
{
print("SUB Class");
}
}
然后,我有第三个 class 看起来像这样的情况:
public class MyOtherClass
{
public MyOtherClass(MySuperClass someSubClass)
{
someSubClass.PrintSubValue();
}
}
它不会编译...正如预期的那样。
现在,如果我将 MyOtherClass
更改为:
public class MyOtherClass
{
public MyOtherClass(MySuperClass someSubClass)
{
someSubClass = (MySubClass) someSubClass;
someSubClass.PrintSubValue();
}
}
还是编译不出来...这个我没想到
为什么我无法将 Super Class 投射到 Sub Class?我该如何解决这个问题?
Why am I unable to cast
您可以进行转换,但随后将其分配回 MySuperClass someSubClass
,这会隐式地将其转换回 MySuperClass
。
使用
var castedSomeSubClass = (MySubClass)someSubClass;
或
MySubClass castedSomeSubClass = (MySubClass)someSubClass;
我有一个 class 看起来像:
public class MySuperClass
{
public void PrintValue()
{
print("SUPER Class");
}
}
然后我有另一个 class 看起来像:
public class MySubClass : MySuperClass
{
public void PrintSubValue()
{
print("SUB Class");
}
}
然后,我有第三个 class 看起来像这样的情况:
public class MyOtherClass
{
public MyOtherClass(MySuperClass someSubClass)
{
someSubClass.PrintSubValue();
}
}
它不会编译...正如预期的那样。
现在,如果我将 MyOtherClass
更改为:
public class MyOtherClass
{
public MyOtherClass(MySuperClass someSubClass)
{
someSubClass = (MySubClass) someSubClass;
someSubClass.PrintSubValue();
}
}
还是编译不出来...这个我没想到
为什么我无法将 Super Class 投射到 Sub Class?我该如何解决这个问题?
Why am I unable to cast
您可以进行转换,但随后将其分配回 MySuperClass someSubClass
,这会隐式地将其转换回 MySuperClass
。
使用
var castedSomeSubClass = (MySubClass)someSubClass;
或
MySubClass castedSomeSubClass = (MySubClass)someSubClass;