1. 程式人生 > >Java中,overload與override的區別

Java中,overload與override的區別

Java的overload(過載)與override(重寫,覆蓋)的區別

一,overload(過載)
1,overload(過載)表示同一個類中可以有多個名稱相同的方法,但是這些方法的引數列表各不相同(即不同的引數型別,不同的引數個數,不同的引數順序,)。overload可以改變返回值型別。

2,過載是一個類中多型性的一種表現。

例如:

public void m1(int x)
{ }

public int m1(int x, int y)
{
   return x+y;
}

public String m1(int x, int y,int z)
{
   return "abc"
; } public String m1(int x, String str) { return "chongzai2"; }

2,overload(過載的特點)
第一:不能通過訪問許可權,返回型別,丟擲的異常進行過載;
第二:方法的異常型別和數目不會對過載造成影響的;
第三:對於繼承來說,如果某一個方法在父類中的修飾符是private,那麼就不能在子類對其進行過載了。如果要定義的話,也只是定義了一個新方法。

二,override(覆蓋,重寫)
1,override(重寫)是父類與子類之間多型性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫了。子類的物件(例項)使用了這個方法時,將呼叫子類中的定義,對它而言,父類中的定義如同被遮蔽了。

2,override(重寫)的程式:

import java.util.*;
class A{            //父類

    public int getVal()
    {
        return 5;
    }
}

class B extends A{  //通過子類對父類抽象方法的覆蓋來實現多型,
     public int getVal()
     {
         return 10;
     }
}

public class Test3{
    public static void main(String []args)
    {
        B b=new
B(); //通過子類建立的例項物件,呼叫 A te=(A)b; int x=b.getVal();//呼叫這個方法,將呼叫子類中的定義方法。 System.out.println(x); } }

返回的結果為: 10

3,override(重寫)的特點:
第一:覆蓋的方法的返回值必須和被覆蓋的方法返回一致;
第二:覆蓋的方法丟擲的異常必須和被覆蓋方法的所丟擲的異常一致,或者是其子類。
第三:被覆蓋的方法不能被定義為private。否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。

相關推薦

Javaoverloadoverride區別

Java的overload(過載)與override(重寫,覆蓋)的區別 一,overload(過載) 1,overload(過載)表示同一個類中可以有多個名稱相同的方法,但是這些方法的引數列表各不相同(即不同的引數型別,不同的引數個數,不同的引數順序,)。

java的equals==的區別

這兩個東西初學java的時候就瞭解了,但那時只是大概的知道判斷數字相等就用==,String字串相等就用equals,後來也有去網上看了一下具體區別,但是,每隔一段時間理解就會變得模糊,所以在這裡記錄一下:1,對於==1)、作用於基本資料型別(也就是8大基本資料型別)變數:比

java 標準輸出標準錯誤 out err 區別 用法 聯絡 java的outerr區別 System.out和System.err的區別 System.out.println和System.err.println的區別 Java重定向S

/** * The "standard" output stream. This stream is already * open and ready to accept output data. Typically this stream * corresponds

Java抽象類介面區別

抽象類:抽象類是無法例項化的特殊類。所以問題是為什麼我們需要一個不能被例項化的類,抽象類只能是子類(繼承自)。換句話說,它只允許其他類繼承它,但不能例項化。優點是它為所有子類執行特定的層次結構。簡

C移植到Javabyte[]其他資料型別的轉換

最近在把C程式碼移植到Java(Android)中,C中一般的資料都會使用byte[](unsigned char)來儲存,且位操作特別頻繁。我要把這些資料轉換成在Java儲存,或把byte轉換成本語言的其他型別,掉進不少坑。這裡,總結下這段時間我遇到的轉換問題。 一、C與Java的變數

JAVA的基礎-----過載重寫(覆蓋)的區別overloadoverride

JAVA中多型的實現機制主要通過overload和override實現。 1)方法的過載:簡言之,就是指同一個類有多個同名的方法,這些方法擁有不同的引數(同名不同參)。可以認為是類中方法的多型性,也稱為編譯時多型。 2)方法的重寫(覆蓋):子類可覆蓋父類的方法,已達到“個性

javaoverloadoverride區別

1、綜述   重寫(Override)也稱覆蓋,它是父類與子類之間多型性的一種表現,而過載(Overload)是一個類中多型性的一種表現。 override從字面就可以知道,它是覆蓋了一個方法並且對其重寫,以求達到不同的作用。overload它是指我們可以定義

JavaOverload(重載)Override(重寫、覆蓋)

tro 子類 數列 AD 屬性。 需要 ide per cati java中的方法重載發生在同一個類中兩個或者多個方法的方法名相同但是參數不同的情況,方法重載是指子類與父類之間子類重新定義了父類的方法,重寫的方法與原方法簽名、返回值、參數完全相同。Overload(重載)

Java&&&|||的區別

key int ron sso keyword 邏輯運算 一個 || mil 原文地址: Java中,&&與&,||與|的區別 在java的邏輯運算符中,有這麽四類:&&(短路與),&,|,||(短路或)。 &am

Java&&&|||的區別

在java的邏輯運算子中,有這麼四類:&&(短路與),&,|,||(短路或)。 &&和&都是表示與,區別是&&只要第一個條件不滿足,後面條件就不再判斷。而&要對所有的條件都進行判斷。看下面的程式: p

Java關於a=a+ba+=b的區別

/** * short a = 1; a = a + 1;有什麼錯? short a= 1; a += 1;有什麼錯? */ public class test2 { public static void main(String[] args) {

java只宣告一個物件不賦值宣告一個物件並賦為null有啥區別

轉自:http://www.oschina.net/question/557858_127408 http://zhidao.baidu.com/link?url=rp_hAuPys2vMPnir0t7IFccKVnwEm8zHI7-wEoBSJXw05SAmKHGOObT

Java過載(Overload)和重寫(Override)的區別

過載(Overload) 過載是指在一個類裡面,方法名相同,引數不同。java中有構造器過載和方法過載(意義是一樣的,叫法不同) public class Car { private String name; private String p

Java關於.Class().getCalss.getClass().getName()的區別

/** * Java反射 所謂反射,可以理解為在執行時期獲取物件型別資訊的操作。 傳統的程式設計方法要求程式設計師在編譯階段決定使用的型別,但是在反射的幫助下, 程式設計人員可以動態獲取這些資訊,從而編寫更加具有可移植性的程式碼。 嚴格地說,反射並非程式語言的特性

JavaString、StringBuffer、StringBuilder區別使用

一、簡介 在 Java 語言中,共有 8 個基本的資料型別,分別為:byte、short、int、long、float、double、boolean 和 char,其中 char 型別用於表示單個字元,例如 a、b、c 、A、B、C、& 這些大小寫

JAVA例項變數類變數的區別例項方法和類方法的區別

class TiXing{ private float up,height; private static float down; TiXing(float x,float y,float z){ up=x; height=y;

Socket編程阻塞非阻塞的區別

軟件 復用 優點 調用 服務器 運用 需要 默認 con   阻塞:一般的I/O操作可以在新建的流中運用.在服務器回應前它等待客戶端發送一個空白的行.當會話結束時,服務器關閉流和客戶端socket.如果在隊列中沒有請示將會出現什麽情況呢?那個方法將會等待一個的到來.這個行為

javapublic voidpublic static void區別

sta erro ati 對象 方法 這樣的 調用 必須 靜態方法 static 方法可以被main方法直接調用,而非static方法不可以。因為static方法是屬於類的,是類方法。可以通過類名.方法名直接調用。而非static方法必須等對象被new出來以後才能使用,因而

Java重載重寫的區別

ref 類對象 就是 不同 3.4 做出 同方 相同 默認 簡單的個人記憶,重寫是子類中的方法與父類的方法參數、返回值一模一樣,重載是對於同一個類中的方法,方法名相同,參數類型、個數不同。當父類的引用指向子類對象的時候,子類中如果有對於父類方法的重寫,則調用的是子類重寫過的

java方法參數是基本類型和引用類型的區別

關系 傳遞 類型 參數 變量 找到 外部 內存地址 chan 方法參數是基本類型時,傳遞的是值。 方法參數是引用類型時,傳遞的是內存地址值 當參數是基本類型時,在調用方法時將值傳遞到方法中,運行方法,運行結束方法退出,對原本main中定義的變量沒有任何操作(方法中沒有re