记住一个原则:(1)通过对象调用属性,只看类型,不看对象;
(2)通过对象调用方法,只看对象,不看类型;
举个例子:
public class Father { //父类
public String a = "Father"; //父类属性
public Father() { //父类构造函数
a = "father";
}
public String output() {
return "I am Father";
}
}
public class Son extends Father { //继承父类的子类
public String a = "Son"; //子类属性
public String output() {
return "I am Son";
}
}
public class Test { //测试类
public static void main(String[] args) {
Father s = new Son(); //定义一个引用变量,变量的『类型』是『Father』,而实现的对象是『Son』
System.out.println(s.output()); //根据原则(2) 这里打印"I am Son"
System.out.println(s.a); //根据原则(1) 这里打印"Father"
}
}
(2)通过对象调用方法,只看对象,不看类型;
举个例子:
public class Father { //父类
public String a = "Father"; //父类属性
public Father() { //父类构造函数
a = "father";
}
public String output() {
return "I am Father";
}
}
public class Son extends Father { //继承父类的子类
public String a = "Son"; //子类属性
public String output() {
return "I am Son";
}
}
public class Test { //测试类
public static void main(String[] args) {
Father s = new Son(); //定义一个引用变量,变量的『类型』是『Father』,而实现的对象是『Son』
System.out.println(s.output()); //根据原则(2) 这里打印"I am Son"
System.out.println(s.a); //根据原则(1) 这里打印"Father"
}
}