2014-10-07 2 views
0

я получил два класса, один называется «Территория», который строит объект со следующими переменными: «PosX» и «Пози», как это:Ссылка переменной от объекта в другом классе

public Territory(int column, int row) 
{ 
    posX = column; 
    posY = row; 
} 

Тогда в другом классе, «Мир» я делаю следующее:

Territory territory1 = new Territory(0, 0); 

Но тогда, когда я пытаюсь ссылаться на некоторые переменные из этого объекта, то есть, как это:

System.out.println("Coordinates: " + territory1.posX); 

Я получаю сообщение об ошибке:

cannot find symbol - variable territory1 

Любая помощь?

EDIT:

Вот полные классы:

Территория:

public class Territory 
{ 
    public int posX; 
    public int posY; 
    public int armies; 
    public String owner; 

    public Territory(int column, int row) 
    { 
     posX = column; 
     posY = row; 
     armies = 0; 
     owner = null; 
    } 
} 

World:

public class World 
{ 
    public World() 
    { 
     Player player1 = new Player(); 
     Player player2 = new Player(); 

     Territory territory1 = new Territory(0, 0); 
     Territory territory2 = new Territory(1, 0); 
     Territory territory3 = new Territory(0, 1); 
     Territory territory4 = new Territory(1, 1);  
    } 

    public java.lang.String toString() 
    { 
     System.out.println(territory1.getposX); 
    } 
} 
+0

Проблема, вероятно, с областью 'territory1', хотя, на основе ошибки, а не с модификаторами доступа его полей. – Voicu

ответ

2

ваш метод toString() не признает «territory1», потому что он был объявлен в другом методе

Это должно работать

public class World 
{ 
    Territory territory1, territory2, territory3, territory4; 

    public World() 
    { 
     Player player1 = new Player(); 
     Player player2 = new Player(); 

     territory1 = new Territory(0, 0); 
     territory2 = new Territory(1, 0); 
     territory3 = new Territory(0, 1); 
     territory4 = new Territory(1, 1);  
    } 

    public toString() 
    { 
     if(territory1 != null) 
      System.out.println(territory1.posX); 
    } 
} 
+0

Я пробовал оба из них и не работал, все еще получая ту же ошибку. Я обновил сообщение, чтобы показать полный код. – vess

+0

@ RyanEder nahh. конечно, это не решит вашу проблему. почему бы вам не опубликовать свой полный код раньше. ваш метод 'toString()' не распознает 'территория1', потому что он был объявлен другим способом – DnR

+0

@Voicu не знает об этом. Кажется, что мой ответ полностью отсутствует! удаление – DnR

0

Если вы не в состоянии получить доступ к атрибуту класса в другом классе, то это означает, что этот атрибут не виден этому классу. Проверьте спецификатор доступа для атрибутов. Возможно, вам придется использовать getter (открытый метод для получения значения частной переменной) для переменной.

Смежные вопросы