Core Java: 继承覆盖时的一个问题
看如下Java代码:public class Main {public static void main(String[] args) {Person person = new Student();System.out.println("Name: "+person.getName()); // --> Guessperson.setName("set outside");System.out.println("After Name: "+person.getName()); // --> GuessStudent student = (Student)person;System.out.println("After cast, Name: "+student.getName()); // --> Guess}}class Person {private String name = "Person name";//--> (A)public void setName(String name) {this.name = name+"_ in superClass";}public String getName() {return this.name;}}class Student extends Person{private String name = "Student name"; // --> (B)public void setName(String name) {this.name = name + "_ in subClass";}/*public String getName() {--> (C)return this.name;}*/} 运行先猜下三个输出是什么? 接着做如下改动再猜结果: 把(A)处的private改为protected, 把(B)处一行注释掉, 把 (C)处的方法放开.
运行结果怎么? 为什么?
页:
[1]