为什么java中父类中的有些方法可以在子类中直接调用,而有的方法需要用super来调用?

如:父类Geometric中有public void setcolor();public void setfilled();和
public java.util.Date datacreat()三个方法,子类中调用方法如下:
setcolor( ); setfilled(); super.datacreat()
这是为什呢?求大虾解答。

子类可以调用父类的任何非私有方法,而用到super时可能子类中对父类的datacreat方法进行重写用super表明调用的是父类里的方法追问

也就是说:如果子类中没有对父类的方法进行重写的话,就可以直接调用非私有方法;而如果有重写,就要用到SUPER 来调用方法。而重写的时候方法签名又一样,这里super就是起一个区分的作用,以表明这是父类的方法。这样理解对不对?

追答

也可以这样说,因为有时候调用时有特别要求去调用父类方法,这时就用super调用,其实用的最多的是构造函数啦,别的情况也很少会用到

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-20
在子类中定义了与父类同名的方法,而有时又需要直接使用父类的同名方法时,就需要用super来指定。
第2个回答  2015-07-31
这个,只要方法的访问修饰符不是private,都可以访问的,不加super也可以的,就是加不加super是无所谓的。
第3个回答  2012-04-05
这三个方法只有返回类型的不同,如果子类的方法和父类的方法名一样 但返回类型不一样就无法构成方法的重写,而调用父类的这个方法就需要用super
第4个回答  2015-08-11
如果子类有重写了父类的方法,但是又想使用父类的方法就必须用super 调用,直接调用不带super 的话就是使用了子类重写的方法
相似回答