2012-04-08 7 views
0

나는 자바의 멍청한 놈이다. 그리고 파이썬 후에 자바를 배우는 사람이다. 어쨌든,이 문제를 파악하는 데 어려움을 겪고 있습니다. 나는 차이가 무엇 클래스를자바에서 다양한 형태의 선언 사이의 차이

class Bicycle{ 
     .... 
} 

public class Bicycle{ 
    ....} 

가 있다고 가정 . 그리고 무엇

public static class Bicycle{ 
       // if this can be a valid class def in first place 
    } 

에 대한 다음,이 후 .. 변수에 대한 이야기를 할 수 있습니다.

class Bicycle{ 
    int Gear or public int Gear // whats the difference 
    } 

어느 것을 사용합니까?

답변

5

이러한 키워드 (또는 키워드 부족)는 액세스 수정 자로 알려져 있습니다. 즉, 클래스 나 멤버의 액세스 가능성을 제어합니다.

클래스는 다음과 같은 수식이 있습니다

  • public - 접근 어디서나
  • (더 수정 없음) - 같은 패키지에서만 접근

반원들에게 더 많은 가능성이 있습니다

  • public - 어디서나 액세스 할 수 있습니다.
  • protected - 연장 클래스 동일한 패키지 또는에만 액세스
  • (더 수정 없음) - 같은 패키지 만 액세스
  • private - 동일한 클래스 파일 만 액세스 *

* nested classes은 외부 클래스의 private 멤버에 액세스 할 수 있으며 그 반대의 경우도 마찬가지입니다.

액세스 수정 자에 대한 자세한 내용은 here.을 참조하십시오. 기본 사항은 this helpful article입니다.


편집

: 나는 public static class Bicycle와 함께, 귀하의 중간 예를 놓친 - static 여기 Bicycle가 중첩 클래스 것을 의미한다. 중첩 된 클래스에 대한 설명은 this page (내 아래 첨자로 이미 링크되어 있음)을 참조하십시오.이 클래스는 정적 클래스 및 정적이 아닌 내부 클래스로 분류됩니다.

3

수정 기호는 코드, 데이터 및 클래스의 특성에 대한 정보를 컴파일러에 제공하는 Java 키워드입니다. 그것은 두 가지 유형으로 분류됩니다.

  1. 액세스 수정 자 : public, protected, private.
  2. 액세스 할 수없는 수정 자 (final, Abstract, Synchronized, Native, stricfp).

클래스 이전에 액세스 한정자를 지정하지 않으면 "기본"액세스 지정자로 사용됩니다.

public class A  : //access specification would be public. This class can be access any where. 

class A   : //access specification would be default. This class can be used only in the same package. So, default is called as package level specification 

우리는

public static class A{ 
} 

정적 클래스를 선언 할 수 없습니다하지만 우리는 더 명확하게는 "SCJP"에서 자바 액세스 수정을 참조 얻으려면 정적

public class A 
{  
    static class B{ 

    }  
} 

으로 내부 클래스를 선언 할 수 있습니다 작성자 : kathy sierra