2016-02-26 3 views
1

Извините, если заголовок не такой точный, как должен быть, или, может быть, даже с фанатичным переводом с моей стороны. Я немец и новичок в кодировании, так что успокойте меня. Так что я закодировал программу в JAVA. Это программа для банковского счета, которую я взял в книге и попытался расширить. Теперь, чтобы сохранить это в этом потоке, я, очевидно, уменьшил свой примерный код проблемы.Доступ к объекту класса из метода за пределами основного

public class Test1 { 
public static void method(){ 
    k.setNumber(300); // This is where the problem is. From this method 
         // I cannot acces the in main created class 
         // object from 'Test' 
    } 

public static void main(String[] args) { 

    Test k = new Test(); 

    method(); 
    k.getNumber(); 

} 

} 

Теперь класс «Test:

public class Test { 

int number; 

public int getNumber(){ 
    return number; 
} 

public void setNumber(int nr){ 
    number = nr; 
} 
} 

Так есть ли способ вокруг него? В противном случае мне пришлось бы писать все в «главном», что не представляет проблемы в данном примере, но в моем исходном коде это не так просто сделать.

Спасибо за любую помощь и советую. Надеюсь, это не было опубликовано раньше, потому что я уже просматривал этот сайт и в Интернете.

ответ

0

вам нужно определить

Test K = new Test() 

вне либо методов, то есть основной и метод. В основном вам нужно сделать глобальное отображение «K» видимым для обоих методов.

3

В настоящее время k принадлежит только основному методу. Чтобы получить доступ к нему из других методов в пределах одного класса, вам нужно сделать его переменной класса. Это должно быть то, что вам нужно:

public class Test1 { 
    private static Test k; 

    public static void method() { 
     k.setNumber(300); 
    } 

    public static void main(String[] args) { 
     k = new Test(); 
     method(); 
     k.getNumber(); 
    } 
} 
+1

'k' должен быть' static' тоже. – StepTNT

+0

Это работает !! Спасибо вам и всем, кто помог мне. В процессе я также понял, почему именно p'rivate static Scanner 'является переменной класса. Это аналогичный случай. – DetroitRead

0

вы можете сделать это, как:

public class Test1 { 
public static void method(Test k){ 
    k.setNumber(300); // This is where the problem is. From this method 
         // I cannot acces the in main created class 
         // object from 'Test' 
    } 

public static void main(String[] args) { 

    Test k = new Test(); 

    method(k);//pass this test class instance to method 
    k.getNumber(); 

} 

} 
0

Вы можете либо установить k быть глобальной переменной или вы можете передать его в параметрах method как так.

public static void main(String[] argv) 
{ 
    final Test k = new Test(); 

    method(k); 
    System.out.println( k.getNumber()); 
} 

public static void method(Test k) 
{ 
    k.setNumber(2); 
} 
1

Вы можете также использовать его в качестве переменной для метода:

public class Test1 { 

public static void method(Test test){ 
    test.setNumber(300); 
} 

public static void main(String[] args) { 
    Test k = new Test(); 

    method(k); 
    k.getNumber(); 
} 

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