繼承可以使用父類(lèi)的所有方法,但是如果繼承的是抽象類(lèi)的話(huà),需要復寫(xiě)抽象類(lèi)中所有的抽象方法,繼承在需要用到父類(lèi)方法且需要有自身特有方法的情況下使用,比如,有一個(gè)類(lèi)Person,里面有個(gè)有個(gè)方法getName,現在又有個(gè)Student類(lèi),需要用到getName和getCourse方法,如果不繼承,就需要再寫(xiě)一個(gè)方法getName,如果繼承Person,就可以直接使用getName方法,再寫(xiě)一個(gè)getCourse即可,代碼如下
class Person
{
String name;
Person(String name)
{
this.name = name;
}
String getName()
{
return name;
}
}
class Student extends Person
{
String name;
String course;
Person(String name,String course)
{
super(name);
this.name = name;
}
String getName()
{
return name;
}
String getCourse()
{
return course();
}
}而繼承抽象類(lèi)是為了使子類(lèi)必須使用父類(lèi)的方法
還是上面那個(gè)例子,Person類(lèi)有個(gè)抽象方法name;好比每個(gè)人必須有名字,那么繼承他的子類(lèi)必須復寫(xiě)name方法
重寫(xiě)方法的規則:
1、參數列表必須完全與被重寫(xiě)的方法相同,否則不能稱(chēng)其為重寫(xiě)而是重載。
2、返回的類(lèi)型必須一直與被重寫(xiě)的方法的返回類(lèi)型相同,否則不能稱(chēng)其為重寫(xiě)而是重載。
3、訪(fǎng)問(wèn)修飾符的限制一定要大于被重寫(xiě)方法的訪(fǎng)問(wèn)修飾符(public>protected>default>private)
4、重寫(xiě)方法一定不能拋出新的檢查異常或者比被重寫(xiě)方法申明更加寬泛的檢查型異常。例如:
父類(lèi)的一個(gè)方法申明了一個(gè)檢查異常IOException,在重寫(xiě)這個(gè)方法是就不能拋出Exception,只能拋出IOException的子類(lèi)異常,可以?huà)伋龇菣z查異常。
而重載的規則:
1、必須具有不同的參數列表;
2、可以有不責罵的返回類(lèi)型,只要參數列表不同就可以了;
3、可以有不同的訪(fǎng)問(wèn)修飾符;
4、可以?huà)伋霾煌漠惓#?/p>
重寫(xiě)與重載的區別在于:
重寫(xiě)多態(tài)性起作用,對調用被重載過(guò)的方法可以大大減少代碼的輸入量,同一個(gè)方法名只要往里面傳遞不同的參數就可以擁有不同的功能或返回值。
用好重寫(xiě)和重載可以設計一個(gè)結構清晰而簡(jiǎn)潔的類(lèi),可以說(shuō)重寫(xiě)和重載在編寫(xiě)代碼過(guò)程中的作用非同一般.
public class A {
private int i;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
}
public class B extends A {
public static void main(String args[]){
B b = new B();
b.setI(3);
System.out.println(b.getI());
}
}
子類(lèi)中就是繼承父類(lèi)里的變量和方法(注意:是不是真的能繼承,還看父類(lèi)變量和方法的訪(fǎng)問(wèn)修飾符是什么,例如private修飾的變量和方法就不能繼承)
父類(lèi)的構造凼數沒(méi)有被繼承,這里所說(shuō)的意思是指在實(shí)例化子類(lèi)的對象時(shí),在new后面不能調用父類(lèi)的構造凼數,但是可以在子類(lèi)的構造凼數里使用super來(lái)調用父類(lèi)的構造凼數,如果沒(méi)有寫(xiě)super這句調用,子類(lèi)會(huì )自動(dòng)調用父類(lèi)無(wú)參的構造凼數
可以new一個(gè)子類(lèi)的對象賦給一個(gè)父類(lèi)的變量,當通過(guò)這個(gè)父類(lèi)的變量執行方法時(shí),其實(shí)是執行的子類(lèi)的方法
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:2.842秒