【源碼+項(xiàng)目部署】Java項(xiàng)目實(shí)戰(zhàn)_Java學(xué)生成績在線管理_Java課程設(shè)計(jì)_Java畢業(yè)設(shè)計(jì)
6月就快結(jié)束了,小伙伴們應(yīng)該陸續(xù)都畢業(yè)了叭?無論大家是否做完了畢業(yè)設(shè)計(jì),都建議看一下本篇帶來的Java實(shí)戰(zhàn)項(xiàng)目——學(xué)生成績在線管理,對大家熟練掌握J(rèn)ava知識是有幫助的~


在子類中如果創(chuàng)建了一個(gè)與父類中相同名稱、相同返回值類型、相同參數(shù)列表的方法,只是方法體中的實(shí)現(xiàn)不同,以實(shí)現(xiàn)不同于父類的功能,這種方式被稱為方法重寫(override),又稱為方法覆蓋。當(dāng)父類中的方法無法滿足子類需求或子類具有特有功能的時(shí)候,需要方法重寫。
子類可以根據(jù)需要,定義特定于自己的行為。既沿襲了父類的功能名稱,又根據(jù)子類的需要重新實(shí)現(xiàn)父類方法,從而進(jìn)行擴(kuò)展增強(qiáng)。
在重寫方法時(shí),需要遵循下面的規(guī)則:
參數(shù)列表必 須完全與被重寫的方法參數(shù)列表相同。
返回的類型必 須與被重寫的方法的返回類型相同(Java1.5 版本之前返回值類型必 須一樣,之后的 Java 版本放寬了限制,返回值類型必 須小于或者等于父類方法的返回值類型)。
訪問權(quán)限不能比父類中被重寫方法的訪問權(quán)限更低(public>protected>default>private)。
重寫方法一 定不能拋出新的檢査異?;蛘弑缺恢貙懛椒暶鞲訉挿旱臋z査型異常。例如,父類的一個(gè)方法聲明了一個(gè)檢査異常 IOException,在重寫這個(gè)方法時(shí)就不能拋出 Exception,只能拋出 IOException 的子類異常,可以拋出非檢査異常。
另外還要注意以下幾條:
重寫的方法可以使用 @Override 注解來標(biāo)識。
父類的成員方法只能被它的子類重寫。
聲明為 final 的方法不能被重寫。
聲明為 static 的方法不能被重寫,但是能夠再次聲明。
構(gòu)造方法不能被重寫。
子類和父類在同一個(gè)包中時(shí),子類可以重寫父類的所 有方法,除了聲明為 private 和 final 的方法。
子類和父類不在同一個(gè)包中時(shí),子類只能重寫父類的聲明為 public 和 protected 的非 final 方法。
如果不能繼承一個(gè)方法,則不能重寫這個(gè)方法。
例 1
每種動(dòng)物都有名字和年齡屬性,但是喜歡吃的食物是不同的,比如狗喜歡吃骨頭、貓喜歡吃魚等,因此每種動(dòng)物的介紹方式是不一樣的。
下面編寫 Java 程序,在父類 Animal 中定義 getInfo() 方法,并在子類 Cat 中重寫該方法, 實(shí)現(xiàn)貓的介紹方式。父類 Animal 的代碼如下:
public class Animal {
public String name; // 名字
public int age; // 年齡
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getInfo() {
return "我叫" + name + ",今年" + age + "歲了。";
}
}
子類 Cat 的代碼如下:
public class Cat extends Animal {
private String hobby;
public Cat(String name, int age, String hobby) {
super(name, age);
this.hobby = hobby;
}
public String getInfo() {
return "喵!大家好!我叫" + this.name + ",我今年" + this.age + "歲了,我愛吃" + hobby + "。";
}
public static void main(String[] args) {
Animal animal = new Cat("小白", 2, "魚");
System.out.println(animal.getInfo());
}
}
如上述代碼,在 Animal 類中定義了一個(gè)返回值類型為 String、名稱為 getInfo() 的方法,而 Cat 類繼承自該類,因此 Cat 類同樣含有與 Animal 類中相同的 getInfo() 方法。但是我們在 Cat 類中又重新定義了一個(gè) getInfo() 方法,即重寫了父類中的 getInfo() 方法。
在 main() 方法中,創(chuàng)建了 Cat 類的對象 animal,并調(diào)用了 getInfo() 方法。輸出的結(jié)果如下:
喵!大家好!我叫小白,我今年2歲了,我愛吃魚。
如果子類中創(chuàng)建了一個(gè)成員變量,而該變量的類型和名稱都與父類中的同名成員變量相同,我們則稱作變量隱藏。