在Java編程中,經(jīng)常會(huì)遇到重寫和覆蓋兩個(gè)概念。兩者看起來(lái)很相似,但實(shí)際上有著很大的不同。
重寫(Override)是指子類重寫父類中的同名方法,使得子類可以根據(jù)自己的需要對(duì)該方法進(jìn)行重新實(shí)現(xiàn)。重寫的方法必須具有相同的方法名稱,參數(shù)列表和返回值類型。以下是一個(gè)簡(jiǎn)單的重寫示例:
class Animal { public void eat() { System.out.println("Animal is eating."); } } class Cat extends Animal { public void eat() { System.out.println("Cat is eating."); } } public class Test { public static void main(String[] args) { Animal animal = new Animal(); animal.eat(); //輸出:Animal is eating. Cat cat = new Cat(); cat.eat(); //輸出:Cat is eating. } }
可以看到,父類Animal中的eat方法被子類Cat重寫了,輸出結(jié)果也與父類不同。
覆蓋(Overload)則是指在同一個(gè)類中允許存在多個(gè)同名方法,但它們的參數(shù)列表不同,或者返回值類型不同。以下是一個(gè)簡(jiǎn)單的覆蓋示例:
class Calculation { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } public class Test { public static void main(String[] args) { Calculation calc = new Calculation(); System.out.println(calc.add(1, 2)); //輸出:3 System.out.println(calc.add(1.0, 2.0)); //輸出:3.0 } }
在上述代碼中,Calculation類中存在兩個(gè)同名方法add,但是參數(shù)類型不同,因此它們可以在同一個(gè)類中共存。
總的來(lái)說(shuō),重寫與覆蓋都是Java中常用的特性。兩者的主要區(qū)別在于重寫指子類重寫父類中的方法,而覆蓋指同一個(gè)類中的方法。對(duì)于Java開發(fā)者而言,了解它們的使用和區(qū)別是非常重要的。
上一篇css排行樣式怎么寫
下一篇java重載和覆蓋好處