Java覆寫詳解

2021-09-13 23:32:53 字數 2431 閱讀 1571

覆寫:如果子類定義了與父類相同的屬性或方法,這個操作就稱為覆寫

方法的覆寫:子類定義了與父類方法名稱,引數型別,及個數完全相同的方法,但是覆寫不能有比父類更嚴格的訪問控制許可權

觀察簡單覆寫

package testoverride;

/** * author:weiwei

* description:簡單的覆寫

* creat:2019/3/28

**/class person

}class student extends person

public static class print

}public class testoverride1

}

注意:

覆寫的時候要注意當前物件是通過哪個類new的

當呼叫某個方法時,如果這個方法已經被子類覆寫了,那麼呼叫的一定是被覆寫過的方法

觀察錯誤覆寫

package testoverride;

/** * author:weiwei

* description:錯誤覆寫

* creat:2019/3/28

**/class person

}class student extends person

public static class print

}public class testoverride1

}

建議:

以後寫方法時,99%的情況下覆寫都用public

寫屬性時,98%的情況下用private

(重點)過載與覆寫的區別 :

no區別

過載(overload)

覆寫(override)1概念

方法名稱相同,引數列表(型別,個數)不同

方法名稱,返回值型別,引數的型別及個數完全相同2範圍

乙個類繼承關係3限制

無訪問許可權控制

被覆寫的方法不能有比父類更嚴格的訪問控制許可權

覆寫的兩同兩小一大原則:

當子類定義了與父類屬性名稱完全相同的屬性的時候,就稱為屬性覆寫

觀察屬性覆寫 

class person

class student extends person

public class test

}

這種操作本身沒有任何意義,其核心的原因在於:類中的屬性都要求使用private封裝,一旦封裝了,子類不知道父

類具有什麼屬性,那麼也就不存在屬性覆蓋的問題了 

在進行覆寫操作過程中,子類可以使用super.方法()或者super.屬性明確呼叫父類的方法和屬性

觀察使用super呼叫父類的同名方法

package testoverride;

/** * author:weiwei

* description:使用super呼叫父類的同名方法

* creat:2019/3/28

**/class person

}class student extends person

public static class print

}public class testoverride1

}

觀察使用super呼叫父類屬性

package testoverride;

/** * author:weiwei

* description:使用super呼叫父類屬性

* creat:2019/3/28

**/class person

class student extends person

public static class print

}public class testoverride2

}

super與this的區別:

no區別

this

super1概念

訪問本類中的屬性和方法

由子類訪問父類中的屬性和方法

2查詢範圍

先查詢本類,如果本類沒有就掉用父類

不查詢本類,而直接呼叫父類定義的方法或屬性3特殊

表示當前物件

為什麼要進行覆寫?

子類覆寫父類的方法是因為父類的方法功能不足才需要覆寫。

注意方法覆寫的時候使用的就是public許可權

詳解Java中的覆寫與過載

1.override 覆寫 重寫 重寫發生在子類繼承父類時,覆寫 重新實現 父類中的方法。重寫方法的引數列表必須完全與被重寫的方法相同,否則不能稱為重寫而是過載。重寫方法的訪問修飾符一定要大於被重寫方法的訪問修飾符 public protected default private 重寫的方法的返回值...

java物件導向 十一 覆寫

在子類和父類的關係中,如果子類中有定義和父類完全相同的方法或屬性的名稱,就稱為覆寫.當子類定義了和父類在方法名稱,返回值型別,引數型別及個數完全相同的方法時,稱為方法的覆寫.先演示沒有覆寫的操作,範例1 class a class b extends a public class demo 執行結果...

Java中過載與覆寫的區別

區別過載 overload 覆寫 override 1概念 方法名稱相同,引數的型別及個數不同 方法名稱,引數型別,返回值型別和個數完全相同2範圍 乙個類繼承關係3限制 沒有許可權要求 被覆寫的方法不能擁有比父類更為嚴格的訪問控制許可權 而且為了設計的良好,在過載時請保持方法返回型別一致。關於覆寫的...