◎訪問權限與繼承
1. 如果父類與子類在不同的包當中,且父類為default或其成員變數/函數為default者,則子類是可以繼承其成員變數與函數,但會因訪問權限的不足,而造成無法使用之情況產生。所以,在不同包當中要能夠使用的話,而該類與成員變數與函數,皆需設為public(或將成員變數/函數設為protected);否則就是將父類及子類放置在同一個包中。
2. 如果父類的成員變數或函數的修飾子為private的話,就算子類在同一個包當中,也會因private只能在當前的類使用之條件,而該繼承的子類還是不能進行訪問之。
◎ Protected權限的作用
1. protected權限擁有和default一樣的功能(即在同一個包中,可以自由的訪問),但是該權限只能修飾「成員變數」和「成員函數」。
2. protected權限還擁有「跨包繼承」,即唯有具繼承之父子類,且父類使用protected修飾子的話,子類才能在不同的包當中使用父類的成員變數或函數,否則其他非繼承類將無法訪問之。
◎各訪問權限的比較
權限類型 比較項目 |
public |
protected |
default |
private |
可修飾的類型 |
類、成員變數、 |
成員變數、 |
類、成員變數、 |
成員變數、 |
同一類中 |
可以使用 |
可以使用 |
可以使用 |
可以使用 |
同一包中 |
可以使用 |
可以使用 |
可以使用 |
不可使用 |
不同包中 |
可以使用 |
除非為繼承關係 |
不可使用 |
不可使用 |
可訪問之權限 |
Public > Protected > Default > Private |
文章標籤
全站熱搜
留言列表