2010-12-02 5 views
2

비공개 인 동안 클래스 외부의 private int i에 액세스 할 수있는 이유를 알 수 없습니다.자바에서 비공개 필드에 액세스

public class Fish { 

    private int i = 1; 

    public static void main(String[] args) { 
     Fish k = new Fish(); 
     k.i = 2; // it IS possible 
    } 

} 
+2

클래스 외부에서 액세스 할 수 없습니다. 주요 함수는 Fish 클래스의 일부입니다. – Vjy

답변

6

귀하의 주요 방법은이 물고기 클래스의 일부가 아닙니다에 액세스 할 수 있습니까?

다음은 작동하지 않습니다

public class Fish { 

    private int i = 1; 

} 

class Reptile{ 
    public static void main(String[] args) { 
     Fish k = new Fish(); 

     k.i = 2; // Compiler error. 
    } 
} 
1

이것은 수업 외부에 없습니다. 너는 같은 학급에있어.

동일한 클래스의 새 인스턴스를 인스턴스화하고 있으므로이 클래스의 비공개 필드에 액세스 할 수 있습니다.

2

비공개 란 클래스 정의 만이 변수에 액세스 할 수 있음을 의미합니다.

주요 방법은 클래스 물고기의 방법이며, 그래서이 변수

0

이 SomeOtherClass의 주요 방법 인 경우에, 같은 행은 실패합니다.

6

액세스 수정 자 작업 이 아닌 개체 수준에서 작동합니다.

k.i에 액세스 할 수 있습니다. 코드는 i이 선언 된 클래스와 동일한 클래스 내에 있으므로 액세스 할 수 있습니다.

이론적 근거는 다음과 같습니다. 향후 유지 관리 및 리팩터링을 쉽게하기 위해 데이터를 부분적으로 캡슐화합니다. 당신이 코드를 리팩터링 할 때, 당신은 리팩토링 클래스가 아니라 객체입니다.

관련 문제