写出程序的输出,测试自己是否了解继承基础。
/** 父类 */
class PaPa {
String color = "黑白";
public void method() {
System.out.println("父亲照片:" + color);
}
}
/** 子类 */
class Sub extends PaPa {
String color = "彩色";
public void method() {
System.out.println("儿子照片:" + color);
}
}
/** 测试 */
public class Test {
private void show(PaPa p) {
System.out.print(p.color+" ---- ");
p.method();
}
public static void main(String args[]) {
Sub s = new Sub();
PaPa t = new Sub();
PaPa p = new PaPa();
System.out.println(p.color);
System.out.println(s.color);
System.out.println(t.color);
new Test().show(p);
new Test().show(s);
new Test().show(t);
}
}
程序输出:
黑白
彩色
黑白
黑白 ---- 父亲照片:黑白
黑白 ---- 儿子照片:彩色
黑白 ---- 儿子照片:彩色
小结:
成员变量:没有动态绑定的说法,全部都是静态绑定;
覆盖方法:privae/static/final的,按照静态绑定;其他的方法,看实际对象的类型调用匹配的方法。运行时动态绑定。