java基礎學習之三:方法的過載和重寫

趙明威發表於2014-10-08

一、方法

方法:在C、C++語言中稱作函式

一個方法包括方法簽名如:animal(String str),和返回值型別int

方法簽名:包括方法名animal和引數String str

一個方法的實現形式可以是多樣的,

比如說:一個叫做“盆”的東西,可以做很多事情,比如,洗臉,洗衣服,。。。。這就體現了事物的多樣性,這叫做多型

同樣一個方法名的方法也可以被賦予多重功能,這叫做方法的過載,override,

方法過載的區別在於 方法引數的個數或者型別的不同,而不在於返回值型別,比如:

 package test;

public class Foo {
    public int animal(String str){
        System.out.println("Foo animal 1");
        return 1;
    }
    //過載
    public void animal(int a){
        System.out.println(a);
    }
}

過載也可以發生在不同的類中:

------比如在子類中也可以出現過載;

子類繼承父類會獲得父類的成員變數和成員方法:

在子類中可以直接對父類的方法做過載,而不需要顯式表示父類的方法; 例如Coo 繼承了Foo 並且對animal進行過載.如下:

package test;

public class Coo extends Foo {
    public void animal(){
        System.out.println("animal");
    }        
}

過載對修飾詞沒有太大要求;修飾詞:public private ,protected這類詞;

public 修飾方法:方法可以在本工程任何地方呼叫,

private修飾方法,只能在本類中呼叫,

protected修飾方法,則可以子類中和本包中呼叫;

二、另外類還提供了另外一個功能,重寫overwrite

重寫提高了類的多型性,使得方法的功能有多樣性;

下面是一個重寫的例子:

package test;

public class Coo extends Foo {
    public int animal (String a){
        System.out.println("animal2");
        return 0;
    }

    public void animal(){
        System.out.println("animal");
    }
    }

重寫:百度百科的說法:當一個子類繼承一父類,而子類中的方法與父類中的方法的名稱,引數個數、型別都完全一致時,就稱子類中的這個方法重寫了父類中的方法。;;但是我認為重寫就是為了要改變父類方法的功能,否則重寫無意義;

重寫有五個限制:

1、必須是在繼承裡

2、方法名、引數個數和引數型別 都必須相同

3、jdk1.5以後,返回值型別可以與父類相同,也可以與父類不同,但是要求返回值型別是父類的子類。如: 父類的返回值型別是Object類,子類的返回值可以是Object類的子類比如String[1]

4、派生類重寫的方法的訪問許可權不能低於基類的許可權

5、派生類丟擲的異常應該和基類相等或比基類更小

相關文章