Java是一門(mén)面向?qū)ο蟮木幊陶Z(yǔ)言,其中有兩個(gè)重要的概念:重寫(xiě)和重載。這兩個(gè)概念都是為了提高代碼的復(fù)用性和可讀性。
首先,我們來(lái)看一下重寫(xiě)。重寫(xiě)是指子類(lèi)對(duì)父類(lèi)中已有的方法進(jìn)行重新定義,也就是覆蓋掉父類(lèi)中的方法。子類(lèi)中重寫(xiě)的方法必須與父類(lèi)中被重寫(xiě)的方法具有相同的名稱(chēng)、參數(shù)列表和返回類(lèi)型。下面是一個(gè)例子:
class Animal { public void eat() { System.out.println("Animal eats."); } } class Cat extends Animal { @Override public void eat() { System.out.println("Cat eats fish."); } } public class Main { public static void main(String[] args) { Animal animal = new Animal(); Cat cat = new Cat(); animal.eat(); // Output: Animal eats. cat.eat(); // Output: Cat eats fish. } }
在上述例子中,Animal類(lèi)中有一個(gè)eat()方法,而Cat類(lèi)繼承自Animal類(lèi)并重寫(xiě)了eat()方法。當(dāng)我們分別調(diào)用animal.eat()和cat.eat()時(shí),它們輸出的結(jié)果不同,因?yàn)閏at對(duì)象重寫(xiě)了eat()方法。
接下來(lái),我們來(lái)看一下重載。重載是指在一個(gè)類(lèi)中定義多個(gè)同名的方法,但它們的參數(shù)個(gè)數(shù)、順序或類(lèi)型不同。重載的方法在編譯時(shí)就確定了調(diào)用哪個(gè)方法。下面是一個(gè)例子:
class Calculation { public int add(int x, int y) { return x + y; } public double add(double x, double y) { return x + y; } } public class Main { public static void main(String[] args) { Calculation calculation = new Calculation(); int result1 = calculation.add(1, 2); double result2 = calculation.add(1.0, 2.0); System.out.println("result1 = " + result1); // Output: result1 = 3 System.out.println("result2 = " + result2); // Output: result2 = 3.0 } }
在上述例子中,Calculation類(lèi)中定義了兩個(gè)同名的add()方法,但它們的參數(shù)類(lèi)型不同。當(dāng)我們分別傳入整數(shù)和小數(shù)時(shí),調(diào)用的是不同的方法,返回的結(jié)果也不同。
以上就是Java中重寫(xiě)和重載的例子,它們都是非常常見(jiàn)的代碼技巧,在實(shí)際的開(kāi)發(fā)中都會(huì)經(jīng)常用到。