繼承可以使用父類的所有方法,但是如果繼承的是抽象類的話,需要復寫抽象類中所有的抽象方法,繼承在需要用到父類方法且需要有自身特有方法的情況下使用,比如,有一個類Person,里面有個有個方法getName,現(xiàn)在又有個Student類,需要用到getName和getCourse方法,如果不繼承,就需要再寫一個方法getName,如果繼承Person,就可以直接使用getName方法,再寫一個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();
}
}而繼承抽象類是為了使子類必須使用父類的方法
還是上面那個例子,Person類有個抽象方法name;好比每個人必須有名字,那么繼承他的子類必須復寫name方法
重寫方法的規(guī)則:
1、參數(shù)列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是重載。
2、返回的類型必須一直與被重寫的方法的返回類型相同,否則不能稱其為重寫而是重載。
3、訪問修飾符的限制一定要大于被重寫方法的訪問修飾符(public>protected>default>private)
4、重寫方法一定不能拋出新的檢查異?;蛘弑缺恢貙懛椒ㄉ昝鞲訉挿旱臋z查型異常。例如:
父類的一個方法申明了一個檢查異常IOException,在重寫這個方法是就不能拋出Exception,只能拋出IOException的子類異常,可以拋出非檢查異常。
而重載的規(guī)則:
1、必須具有不同的參數(shù)列表;
2、可以有不責罵的返回類型,只要參數(shù)列表不同就可以了;
3、可以有不同的訪問修飾符;
4、可以拋出不同的異常;
重寫與重載的區(qū)別在于:
重寫多態(tài)性起作用,對調(diào)用被重載過的方法可以大大減少代碼的輸入量,同一個方法名只要往里面?zhèn)鬟f不同的參數(shù)就可以擁有不同的功能或返回值。
用好重寫和重載可以設計一個結構清晰而簡潔的類,可以說重寫和重載在編寫代碼過程中的作用非同一般.
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());
}
}
子類中就是繼承父類里的變量和方法(注意:是不是真的能繼承,還看父類變量和方法的訪問修飾符是什么,例如private修飾的變量和方法就不能繼承)
父類的構造凼數(shù)沒有被繼承,這里所說的意思是指在實例化子類的對象時,在new后面不能調(diào)用父類的構造凼數(shù),但是可以在子類的構造凼數(shù)里使用super來調(diào)用父類的構造凼數(shù),如果沒有寫super這句調(diào)用,子類會自動調(diào)用父類無參的構造凼數(shù)
可以new一個子類的對象賦給一個父類的變量,當通過這個父類的變量執(zhí)行方法時,其實是執(zhí)行的子類的方法
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據(jù)《信息網(wǎng)絡傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學習鳥. 頁面生成時間:2.842秒