2013-08-25 4 views
0

다른 클래스에서 "worldInfo"를 읽을 수 있습니까?추상 클래스에서 변수를 읽는 방법은 무엇입니까?

public abstract class World implements IBlockAccess{ 
    protected WorldInfo worldInfo; 
    //=====Stuff===== 
    public World(ISaveHandler par1ISaveHandler, String par2Str, WorldSettings par3WorldSettings, WorldProvider par4WorldProvider, Profiler par5Profiler, ILogAgent par6ILogAgent) 
     { 
     this.worldInfo.setWorldName(par2Str); 
     } 
} 

내가 이름을 얻기 위해 내 수업에서 사용하려면 :

다음 그것을 보유하고있는 클래스의 일부이다. "worldInfo.getWorldName"

편집 1 : 전 세계와 같은 패키지의 클래스 ... "World_Spy.class"

public class World_Spy extends World{ 

    public World_Spy(ISaveHandler par1iSaveHandler, String par2Str, 
      WorldProvider par3WorldProvider, WorldSettings par4WorldSettings, 
      Profiler par5Profiler, ILogAgent par6iLogAgent) { 
     super(par1iSaveHandler, par2Str, par3WorldProvider, par4WorldSettings, 
       par5Profiler, par6iLogAgent); 
    } 

    @Override 
    protected IChunkProvider createChunkProvider() { 
     return null; 
    } 

    @Override 
    public Entity getEntityByID(int i) { 
     return null; 
    } 


    String TheName = ""; 
    public void gotIt(){ 
     TheName = this.worldInfo.getWorldName(); 
     System.out.println(TheName); 
    } 

} 

을 생성하지만 기본 클래스에서 호출 할 때 충돌 확인 게임 ..

World_Spy WName = new World_Spy(null, null, null, null, null, null); 

그것은 매개 변수에 관한 것입니까? 당신이 World을 연장해야하지만 worldNameWorld 생성자의 두 번째 매개 변수로 설정되어 worldInfo에 액세스하려면

+1

왜 생성자가 보호 된 것이 아니라 공개되어 있습니까? –

+0

"다른 학급에서"란 무엇을 의미합니까? 어떤 수업? 당신이 염두에두고있는 몇 가지 특별한 수업이 있습니까? – chrylis

답변

0

, 그것은을 위해

0

을 당신이 당신의 자식 클래스에 알고 의미, 그래서 .. 기능을 사용하려면 protected 키워드를 public으로 변경하거나 클래스에서 공용 함수를 만듭니다.

public String getWorldName(){ this.worldInfo.getWorldName(); }

0

클래스는 abstract, 그래서 시작할 수 없습니다 : 그것은 다음과 같이 보일 것입니다. 이 클래스에서 변수 static을 읽을 수는 있지만이 클래스의 객체를 만들 수는 없습니다. 이 변수를 static으로 만들면이 클래스를 상속하거나이 클래스를 상속 받아 객체를 만들거나 abstract이 아닌 객체로 만들어 객체를 만들 수 있습니다.

이 변수는 상수를 유지합니까? 그것을 static으로 만드십시오.

0

실제로는 protected은 하위 클래스에서도 사용할 수 있지만 동일한 패키지의 다른 클래스에서도 사용할 수 있습니다. 그래서 그래, 당신은 그들이 추상 클래스를 서브 클래스하지 않는 경우에도 같은 패키지의 모든 클래스에서 사용할 수

다음 중 하나에 해당하는 경우 필드에 직접 액세스 할 수 있습니다
0

:

  • 다른 그 클래스가 다른 클래스 보호 필드가 동일 패키지에서 동일한 클래스에 표시 이다 (동일한 패키지에 속하는
  • (도 World 최종없는 비 전용 생성자가 상속 보호 필드 파생 된 클래스에 볼 수있다) World 연장 비공개 패키지).

필드는 보안 관리자가 허용하는 한 해당 필드에 accessible property to true을 설정 한 후 다른 클래스의 리플렉션을 통해 액세스 할 수도 있습니다.

관련 문제