2014-11-17 2 views

답변

3

test1 클래스의 구성원 인 obj에 대한 액세스 한정자를 지정하지 않아 패키지가 기본적으로 비공개가됩니다. 따라서 test2 하위 클래스는 test1과 동일한 패키지에있는 경우에만 액세스 할 수 있습니다. protected classA obj = new classA();으로 변경하면 어떤 패키지 test2에 관계없이 액세스 할 수 있습니다.

그렇다면 모든 구성원을 비공개로 정의하고 액세스 또는 메서드를 통해 액세스 권한을 부여하는 것이 좋습니다.

1

는 파생 클래스 액세스 상위 구성원을 허용하려면, 당신은 당신은 기본 액세스를 준 protected 또는 public

public class test1 { 
    protected classA obj = new classA() 
// ^^^^^^^^ 
} 


public class test2 extends test1 { 
    public void test() { 

     // now you can access obj in test2 
    } 
} 
0

지정해야하고 액세스 동일을 할 수 있어야한다 그래서, 기본 패키지에 둘을 참조하십시오. 서로 다른 패키지를 정의하면 다음과 같은 상위 클래스의 getter 메소드를 노출한다 :

public classA getClassA() { 
    return obj1; 
} 

또는 아래와 같이 보호로 해당 필드를 표시 할 수 있습니다 :

protected classA obj = new classA() 
0

당신은에서 다음을 실행해야 할 수도 있습니다 동일한 패키지에 할당 된 두 개의 개별 파일 파일 1 test1.java

package TestStuff; 
import java.util.List; 
public class test1 { 
    List <String> newStringList; 
} 

이 파일이 지금 나는 이미 내 현재의 클래스에 정의 된 것처럼 내가 test1.java에서 만든 개체에 액세스 할 수

package TestStuff; #same package at test1.java 
public class test2 extends test1 { 
    public void test(){ 
     String d = "dog"; 
     for (int i = 0; i < d.length(); i++){ 
      newStringList.add(d); 
     } 
    } 
} 

test2.java라고했다.

관련 문제