以下是Java代码,当在Eclipse上运行时,即使我们替换掉其中的内容,也会得到相同的输出结果。
请注意我们已经覆盖了方法。 输出是:
请指出在这两种方式中创建子类对象的区别。在访问方法和变量时是否会有任何差异?(我们的Java老师说,在两种情况下访问方法和变量将不同)
另外,像main这样的静态方法会发生什么。虽然我知道它是可继承的,但有人可以强调一下它在子类中的行为吗?
superclass s=new sub();
与之配合,
sub s= new sub();
请注意我们已经覆盖了方法。 输出是:
changed supermethod in sub class
num is sub class 5
代码:
public class superclass {
int num=2;
public static void main(String str[]){
superclass s=new sub();
//HERE: nothing changes if we write, sub s=new sub();
s.supermethod();
s.method();
}
void supermethod(){
System.out.println("supermethod as in superclass");
}
void method(){
System.out.println("num in superclass "+num);
}
}
class sub extends superclass{
int num=5;
void method(){
System.out.println("num is sub class "+num);
}
void supermethod(){
System.out.println("changed supermethod in sub class");
}
}
请指出在这两种方式中创建子类对象的区别。在访问方法和变量时是否会有任何差异?(我们的Java老师说,在两种情况下访问方法和变量将不同)
另外,像main这样的静态方法会发生什么。虽然我知道它是可继承的,但有人可以强调一下它在子类中的行为吗?
superclass
,但在两个实例中,你实际创建的对象是sub
。当你调用方法时,由于sub
有这些方法,它们被调用而不是超类。在superclass
中放置一个你没有在sub
中重写的方法,然后在这两个示例中调用它以查看差异。 - takendarkkSuperclass
(或SuperClass
)和Sub
。 - Fabian