黑马程序员技术交流社区

标题: 子类重写父类 [打印本页]

作者: TS__likewise    时间: 2014-6-16 19:39
标题: 子类重写父类
class A {
public void fun1() {
System.out.println(" A ");
}

public void fun2() {
fun1();       
}

}

class B extends A{
public void fun1() {
System.out.println(" B");
}       
}

public class Test {

public static void main(String[] args) {

new B().fun1();
new B().fun2();
}

}
运行后的结果为:
B
B
new B().fun2(),是调用了从A继承来的方法fun2(),正如fun2()放里面看到的,又调用fun1()方法,最后输出的结果为重写后B类fun1()的结果而不是父类A里面fun1()的结果,这是为什么
作者: 姿_`态    时间: 2014-6-16 19:54
fun2()是子类继承来的,fun()1把父类的fun()1覆盖了
所以对于子类他有的方法是
public void fun1() {
System.out.println(" B");
}     
public void fun2() {
fun1();        
}
创建B对象,调用fun()2,输出肯定是B啊
作者: 张益达    时间: 2014-6-16 20:24
现在 B对象的实例指向了A对象的引用  调用方法当然是B的方法  你懂得
作者: Alan_Kwan    时间: 2014-6-16 21:30
ClassA c = new ClassB();

成员变量看左边,成员方法看右边。
作者: 崔湖尧    时间: 2014-6-16 21:36
1. 子类B复写了fun1();所以运行fun1()结果为B
2. 创建了子类B的对象,因此运行子类B的fun1(),结果为B
作者: 人心如水    时间: 2014-6-16 22:56
对象是谁,调用谁的方法  我一直死记住




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2