訪問權限與繼承

1. 如果父類與子類在不同的包當中,且父類為default或其成員變數/函數為default者,則子類是可以繼承其成員變數與函數,但會因訪問權限的不足,而造成無法使用之情況產生。所以,在不同包當中要能夠使用的話,而該類與成員變數與函數,皆需設為public(或將成員變數/函數設為protected);否則就是將父類及子類放置在同一個包中。

2. 如果父類的成員變數或函數的修飾子為private的話,就算子類在同一個包當中,也會因private只能在當前的類使用之條件,而該繼承的子類還是不能進行訪問之。

 

Protected權限的作用

1. protected權限擁有default一樣的功能(即在同一個包中,可以自由的訪問),但是該權限只能修飾「成員變數」「成員函數」

2. protected權限還擁有「跨包繼承」,即唯有具繼承之父子類,且父類使用protected修飾子的話,子類才能在不同的包當中使用父類的成員變數或函數,否則其他非繼承類將無法訪問之。

 

各訪問權限的比較 

權限類型

比較項目

public

protected

default

private

可修飾的類型

類、成員變數、
成員函數

成員變數、
成員函數

類、成員變數、
成員函數

成員變數、
成員函數、
內部類

同一類中

可以使用

可以使用

可以使用

可以使用

同一包中

可以使用

可以使用

可以使用

不可使用

不同包中

可以使用

除非為繼承關係
,否則不可使用

不可使用

不可使用

可訪問之權限

Public > Protected > Default > Private

 

 

arrow
arrow

    Elsa 發表在 痞客邦 留言(0) 人氣()