从main外部的方法访问类对象

时间:2016-02-26 21:30:32

标签: java class methods

很抱歉,如果标题不够准确,或者甚至可能是我自己的翻译。我是德国人,也是编码的初学者,所以请轻松一下。 所以我用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();

}

}

现在班级'测试:

public class Test {

int number;

public int getNumber(){
    return number;
}

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

那有什么办法吗?否则我将不得不在'main'中写入所有内容,这在本示例中没有问题,但在我的原始代码中并不那么容易。

感谢您的帮助和建议。希望之前没有发布,因为我已经搜索了这个网站和网站。

5 个答案:

答案 0 :(得分:3)

目前,k仅属于main方法。要从同一个类中的其他方法访问它,您需要使其成为类变量。这应该是你需要的:

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 :(得分: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();
 }

}

答案 2 :(得分:0)

你需要定义

Test K = new Test()

在任何一种方法之外,即主要和方法。大多数情况下你需要制作' K'两种方法都可以看到全局。

答案 3 :(得分: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();

}

}

答案 4 :(得分: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 );
}