日期:2014-05-20  浏览次数:20651 次

java基础问题,java 方法为什么要覆写,在子类中重新写个方法不就好了吗

java基础问题,java 方法为什么要覆写,在子类中重新写个方法不就好了吗

在实际应用时,什么地方用得着

------解决方案--------------------
写程序有个原则 叫 开闭原则 大概意思是 对修改关闭 对 增加开放 比如有个 动物类(Animal) 这个动物类有 说(say) 这个方法
有如下代码要调用这个方法
public void show(Animal animal){
animal.say();
}
如果你 有个 狗类(Dog) 传进去 他调用的是狗类 特有狗说(汪) 的方法 
如果你 有个 狗类(Dog) 传进去 他调用的是猫类 特有猫说(喵) 的方法 
如果你 传个 人类(你自己) 进去 他就在这里 就有他 人特有 说 (提问) 的方法
而上面的代码几乎不用改变
不知道你明不明白
------解决方案--------------------
动态绑定在C++和Java中都是一样的,这样可以使接口保持最大的适用性,
接楼上的,比如说有两种动物Dog,Cat类,都继承Animal类,都有叫的动作,定义一个接口函数为animalSound(Animal instance)。当形参为Dog时,instance.cry();为Dog的Cry方法,为Cat时则为Cat的Cry方法,同一个接口不用写两个函数,并且当有新的类Bird等加入时,接口函数也不用改变。

------解决方案--------------------
因为我们需要统一的“接口”,如果每种子类型都完全抛弃父类的方法,另起炉灶,那面向接口的编程就不复存在了。保证方法签名一致就是保证语义的一致,但是实现细节可以变化。
------解决方案--------------------
在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。