2011-11-23 4 views
1

안녕하세요.패키지 내의 액세스 톰 멤버를 이해하려고 시도합니다.

저는 Java를 배우며 패키지 내의 클래스 멤버에 대한 액세스를 이해하려고합니다. MemberAccess 디렉토리에 파일을 만들고 unitOne.MemberAccess 패키지를 호출해야합니다 (맞습니까?)

다음은 간단한 예제입니다.

package unitOne.MemberAccess; 

public class Parent 
{ 
    private String secret = "This is my secret"; 
    protected String inherit = "All my money"; 

    int age = 100; 

    public void singInShower() 
    { 
     System.out.println("la-di-da"); 
    } 
} 

new 나는 OtherPerson이라는 동일한 패키지에 별도의 파일을 만들었습니다.

package unitOne.MemberAccess; 

class OtherPerson 
{ 


    public static void main(String[]args) 
    { 
     OtherPerson op = new OtherPerson(); 
     System.out.println(op.inherit); 
     System.out.println(op.age); 
    } 

} 

문제점은 기호를 찾을 수 없다는 것을 컴파일 타임 오류가 발생한다는 것입니다. 하지만 다른 클래스와 동일한 패키지의 기본 멤버를 보호하고 해당 클래스에서 볼 수 있습니다.

감사 아리우스는

+3

이 패키지 이름은 모두 소문자을하는 것이 일반적인 관례이다. 패키지 이름에 대문자를 사용하는 것은 잘못이 아니지만 드문 경우입니다. – Barend

답변

1

다른 클래스에서 볼 수있는 한 클래스 (개인, 공개, 보호 또는 기본값)의 구성원은 Never입니다. 절대로 .... 밤 암말 일세. 한 클래스가 다른 클래스를 상속 할 때 다른 멤버에 액세스하고 다른 멤버에 대한 가시성이 작용합니다. 따라서 클래스를 확장하거나 부모 자식 관계를 구현해야합니다. 내가 살고있는 곳 그럼 당신은이 시점에서 여기, 그래 그 Good Evening

사실이 될 것이라고 말하고 무엇을 :

+0

죄송합니다, 좋은 밤 (지구 건너편에 있습니다). – Arianule

1

귀하의 OtherPerson 당신의 Parent을 상속하지 않습니다.

OtherPerson.java의 두 번째 줄을 class OtherPerson extends Parent으로 바꾸어보십시오.

1

opOtherPerson 개체이며 age 속성이 없습니다. 하지만 Parent 클래스에는 나이 속성이 있습니다. OtherPerson op = new OtherPerson();Parent op = new Parent();으로 바꿔야합니다.

2

Otherperson 클래스에서 Parent 클래스의 개체를 만들어야합니다.

그래서, 대신 OtherPerson op = new OtherPerson();

3
OtherPerson op = new OtherPerson(); 

opParent op = new Parent()를 작성해야하는 유형 OtherPerson의 인스턴스입니다. 타인학부모 클래스는 관련이 없으므로 학부모 클래스 구성원에 액세스하려면 op을 사용할 수 없습니다.

관련 문제