- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
<分区>
Possible Duplicate:
The concept of shadowing
我对 Java 在向上转型期间如何处理类的字段感到困惑。例如:
class SuperClass
{
String myString = "String in SuperClass";
public void myMethod()
{
System.out.println("Method in SuperClass");
}
}
class SubClass extends SuperClass
{
String myString = "String in SubClass";
public void myMethod()
{
System.out.println("Method in SubClass");
}
}
class Question
{
public static void main(String[] args)
{
SuperClass test = new SubClass();
// object test is an instance of SubClass
// but I am telling the compiler to treat it as SuperClass
test.myMethod();
System.out.println(test.myString);
}
}
输出:
Method in SubClass
String in SuperClass //Why is "String in SubClass" not used?
当我创建一个对象 test
时,它是 SubClass
类的一个实例;但是,我告诉编译器将它视为 SuperClass
。我很清楚关于方法工作的一切:如果给定的方法是为 SuperClass
定义的,我将只能使用 SubClass
的方法。
但是,当我尝试访问 test
的 myString
时,我不明白为什么要使用 SuperClass
的字段。由于 test
是 SubClass
的一个实例,我希望 SubClass
中定义的 myString
被使用,为什么这不是发生了什么?我错过了什么?
我知道我可以使用 this
运算符访问 SubClass
的 myString。例如,我可以在 SuperClass 中定义 printMyString
方法,并用
public void printMyString()
{
System.out.println(this.myString);
}
在 SubClass
中,所以我的问题主要是关于 SuperClass
的字段如何在 test
中使用。也许我遗漏了一些明显的东西?
我试图搜索答案,我找到的最接近的主题是Upcasting in Java and two separate object properties ,虽然有帮助,但没有回答我的问题。
提前致谢
在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型。 向上转型 我们在现实中常常这样说:这个人会唱歌。在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们
当使用使用 C 风格继承的 C API 时,(利用 C 结构的标准布局),例如 GLib ,我们通常使用 C 风格的转换来向下转换: struct base_object { int x;
我是一名优秀的程序员,十分优秀!