Java继承中 如果父类中的方法调用父类的其他方法,还需要理会子类的方法有没有重没重写?

Java继承中 如果父类中的方法调用父类的其他方法,还需要理会子类的方法有没有重没重写?

问题描述:

图片说明

=======分隔符==========

图片说明

子类拥有父类非 private 的属性和方法。
类B继承于类A,test方法也继承下来了。

类B的代码实际上是这样的

class B extends A{
       void test(){  //继承了类A的test
                     method();
             }
            void method(){
                    System.out.println("Sub")
            }
}

继承是面向对象的基本概念,这样再看看题目的输出,是不是就好理解了呢。

如果对您有帮助,请采纳答案好吗,谢谢!

如果是通过子类去调用的就是需要理会的,因为子类可以重写父类的方法,方法的作用对象是子类。

因为方法的作用对象是子类,每次调用的时候先从子类往上面找,如果子类重写了父类的方法就会调用,如果没有才会调用父类的方法。

楼上说的很详细,正解!

需要的 ,例如你上面写的

example:

new B().test();

首先实例的是子类,然后,子类调用的是父类的方法,而父类中这个方法又调用了一个被子类重写的方法,

所以,父类的test 在被调用的时候 ,实际上是调用的method这个方法,而这个方法又被子类重写,所以,转了一个

圈回来还是调用父类被重写的方法 ,

父类调用父类自己的方法,也是要考虑这个方法是不是被子类给重写了或者篡改了

问题仔细考虑下,别钻牛角尖即可!

希望对你有帮助

在 new B() 的时候 是
void test(){
method();
}
void method(){
System.out.println("Sub");
}
出现的这两个方法,
你调用 new B().test(); 自然是被重写后的方法。

因为B继承A所以无论A中有什么方法,在测试类中直接用子类获取就可以获取到父类所有的方法