Differences Between ‘Public’, ‘Private’, ‘Protected’, and ‘Internal’ in Java

Modifier    | Class | Package | Subclass | World
————————————+———————+—————————+——————————+———————
public      |  O    |    O    |    O     |   O
————————————+———————+—————————+——————————+———————
protected   |  O    |    O    |    O     |   X
————————————+———————+—————————+——————————+———————
no modifier |  O    |    O    |    X     |   X
————————————+———————+—————————+——————————+———————
private     |  O    |    X    |    X     |   X

in very short…

  • Public are accessible from everywhere.
  • Protected are accessible by the classes of the same package and the subclasses residing in any package.
  • Default are accessible by the classes of the same package.
  • private are accessible within the same class only.
                | highest precedence <---------> lowest precedence
*———————————————+————————————————+———————————+———————————————+———————
 \ xCanBeSeenBy | this           | any class | this subclass | any
  \             | class          | in same   | in another    | class
   \—————————\  | nonsubbed      | package   | package       |    
Modifier of x \ |                |           |               |       
————————————————*————————————————+———————————+———————————————+———————
public          |       O        |    O      |    O          |   O   
————————————————+————————————————+———————————+———————————————+———————
protected       |       O        |    O      |    O          |   X   
————————————————+————————————————+———————————+———————————————+———————
package-private |                |           |               |
(no modifier)   |       O        |    O      |    X          |   X   
————————————————+————————————————+———————————+———————————————+———————
private         |       O        |    X      |    X          |    X   
  • Public 모든 애플리케이션 영역에서 속성을 읽고 쓸수가 있다.
  • Protected현재 클래스 및 하위 클래스에서 속성을 읽고 쓸수 있다.
  • private 현재 클래스에서만 속성을 읽고 쓸수 있다.
  • Internal 현재 클래스 및 동일 패키지 내의 다른 클래스에서 속성을 읽고 쓸수 있다.
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s