java这是指在子类对象上调用非重写方法时会发生什么?
考虑下面的代码:
class Person {
String className = "Person";
void printClassName () {
System.out.println("I am " + this.className);
System.out.println("I am " + this.getClass().getSimpleName());
}
}
class Employee extends Person {
// intentionally hiding this field
String className = "Employee";
}
public class App {
public static void main(String[] args) {
Employee raghu = new Employee ();
raghu.printClassName();
}
}
我有几个问题
创建子类的对象时,实际创建了多少个对象?只有一个,通过引入子类中定义的新属性来扩展超类的属性?或者两个,我们可以访问的子类对象和一个超类对象,它的存在对我们来说是隐藏的
如果创建了两个对象,在子类对象上调用非重写方法时,哪个对象负责?换句话说,
this
在非重写方法中指的是什么?隐藏的超类对象还是子类对象如果#2的答案是超类的隐藏对象,那么为什么上面的代码在
printClassName
内部为System.out.println("I am " + getClass().getSimpleName());
打印"I am Employee"
如果#2的答案是subclass的对象,那么为什么
printClassName
内的第一行打印"I am Person"
共 (0) 个答案