java子類重寫繼承的方法時可以降低方法的訪問權

2021-03-19 18:19:52 字數 2163 閱讀 1030

1樓:§奀♂仔

不可以的,首先,子類繼承父類的訪問

修飾符要比父類的更大,也就是更加開放,假如我父類是protected修飾的,其子類只能是protected或者public,絕對不能是friendly(預設的訪問範圍)或者private,當然使用private就不是繼承了。其次,還要注意的是,繼承當中子類丟擲的異常必須是父類丟擲的異常的子異常,或者子類丟擲的異常要比父類丟擲的異常要少。

2樓:百毒bu知道

不可以 可以擴大 就是說子類不能"減少"(使用private使用不可呼叫之類)上級的行為

3樓:藍風水晶靈

貌似子類的方法訪問許可權不能高於父類。

java 子類修改父類方法的訪問許可權問題

4樓:匿名使用者

因為父類的變數可以

包含子類的例項..

在子類的構造方法內部最上面有一句隱含的super();..

所以,在建立子類例項的同時也建立了父類的..

所以子類只能小於等於父類...

兒子能比爸爸大嘛- -.

5樓:匿名使用者

不能訪問,不能重寫private方法;請問你是怎麼將private方法修改為public??**示例有沒有?

java子類override的方法的訪問許可權為什麼不能比父類窄?從實用角度講,這是什麼道理? 10

6樓:gta小雞

根據繼承和多型規則,如果一個父類a具有public方法fun,那麼它的任意子類物件上都應該可以呼叫方法fun。而如果子類重寫方法的訪問許可權可以低於父類方法,那麼可以將子類中的fun方法改寫為private,就會出現子類物件無法呼叫fun方法的現象,這就違背了繼承和多型基本原則。例如動物可以呼吸,那麼任何屬於動物的具體物種例如人都可以呼叫呼吸方法。

如果將人類的呼吸方法改為private,那麼人雖然身為動物卻無法呼吸,這就違背了繼承原則。

7樓:匿名使用者

你想想,父類用public 子類用 private

那外面 還能用父類去呼叫子類的方法麼?

顯然不能。一般呼叫都是 直接new個父類去呼叫的。如果子類重寫了,就呼叫重寫的。沒有就用父類的。

為什麼子類重寫父類的方法的訪問修飾符,不能低於父類的方法訪問許可權?

8樓:匿名使用者

重寫也叫覆寫,修飾符、返回型別、引數就是要和父類一摸一樣才叫覆寫,意思是說各個地方都需要完美的蓋住,在面向介面程式設計中,重寫是子類有自己的邏輯要實現,同時又不破壞已寫好程式邏輯的好方法

舉個例子,在父類中是public的方法,如果子類中將其降低訪問許可權為private,那麼子類中重寫以後的方法對於外部物件就不可訪問了,這個就破壞了繼承的含義

9樓:匿名使用者

java中四種訪問許可權 private如果子去重寫父的方法,方法的許可權預設是和父一樣的,但也可以改,但只能加大許可權,不能縮小許可權,比如父是protected,重寫時可以改成public,但如果是public的,重寫只能是public

10樓:紅色警姐

許可權問題嘛,子類的許可權要大於或者等於父類的

11樓:╃原罪丶灬

額 不能通過訪問的許可權來過載,重寫的時候訪問修飾符的限制大於被訪問者,public >pro>def>pri

12樓:我哭了淺笑

可以這樣理解的 這是個授權問題 先說 為什麼不能小於,如果你寫小了

相當於/*相當於 其實不是*/你私吞了父類的方法內容自己又私自定義了一個方法,這樣會有方法重名的問題(與繼承的思想不符合,如果你私有了,這個方法就不能再傳下去) ,再說 為什麼可以大於父類許可權 ,因為父類方法既然可以繼承 拿它就應該具備傳遞性,所 以就可以 大於父類的許可權,以更好發揮繼承提高**複用率的功能;

13樓:匿名使用者

java中的多型機制是:子類的例項可以賦值給父類的引用,通過呼叫父類的方法就可以直接呼叫到子類例項中的方法。

本來父類的方法是public的,此時如果有其他類呼叫了父類的該方法,而子類例項中的方法是private的,private只允許在該類內部使用,會導致呼叫失敗。

子類重寫父類的方法,父類沒有異常,子類可以拋異常嗎

這就是java的重寫規則。對於異常重寫方法不能丟擲新的異常或者比被重寫方法宣告的檢查異常更廣的檢查異常。但是可以丟擲更少,更有限或者不丟擲異常。重寫規則之一 重寫方法不能比被重寫方法限制有更嚴格的訪問級別。但是可以更廣泛,比如父類方法是包訪問許可權,子類的重寫方法是public訪問許可權。比如 ob...

JAVA中子類能不能繼承父類的私有屬性和方法

最近學習繼承,從書中看到子類繼承父類,子類擁有父類所有的屬性和方法,於是使用程式去驗證,發現父類的私有屬性和私有方法,子類是不能訪問的,當然一些父類的私有屬性可能可以通過相應的方法訪問到,但是私有的方法似乎不能簡單的訪問,這裡暫不考慮java反射機制,於是我分析,子類不能繼承父類私有的屬性及方法,但...

java中,實現介面的方法的過程是重寫嗎

重寫1 必須是在繼承裡,2 方法名 返回值型別 引數個數和引數型別 都必須相同3 派生類重寫的方法的訪問許可權不能低於基類的許可權首先介面就不是一個類,實現一個介面也不是繼承關係。所以不能稱之為重寫。只能稱之為實現。是重寫 更準確的應該說是實現 解釋 介面類中定義的都是抽象方法,沒有實現,所以當有介...