应该是override. not overwrite.另外,这里根本不存在多态,由于父类的方法是private的。 所以,运行时绑定也就不存在了。
laotangseng:将程序修该如下,就可得到你要的结果: public class Parent { public Parent() { } public static void main(String args[]) { Parent p = new Parent(); Parent ccc = new Child();
p.method(); ccc.method();
} public void method() {//½«private ¸ÄΪpublic System.out.println("this is father"); } } class Child extends Parent { public void method() {//½«int ¸ÃΪ void System.out.println("this is child"); // return 0; } }
overload是在编译时区分调用哪个方法
overwrite是在运行是决定调用哪个方法。
你的代码不是overwrite。
请解释什么情况是overload,什么是overwrite?
overload必须有不同的参数,返回类型可以不同
如awt里面常见的paint(Graphics g)
overload是对同一方法名提供不同的实现
如System.out.println可以带不同的参数
所以,运行时绑定也就不存在了。
public class Parent { public Parent() {
}
public static void main(String args[]) {
Parent p = new Parent();
Parent ccc = new Child();
p.method();
ccc.method();
}
public void method() {//½«private ¸ÄΪpublic
System.out.println("this is father");
}
}
class Child extends Parent {
public void method() {//½«int ¸ÃΪ void
System.out.println("this is child");
// return 0;
}
}