java:以不同方法访问对象

时间:2017-03-28 17:46:21

标签: java object methods

如何在其他方法中访问在一个方法中创建的对象?

我想这样做,这样我每次创建新方法时都不会一遍又一遍地创建相同的对象,并希望在其中使用该对象。这是我正在上课的课程:

import BrandPhone.*;

public class Test {

    public static void main(String[] args) {

        // Creating the object. 
        Phone myPhone = new Phone();

        //Creating another object.
        Color color = myPhone.getColor();
    }
}

如果我尝试使用另一种新方法(例如下面显示的方法color)访问对象initialise,我会收到error说“无法找到符号”:

import BrandPhone.*;

public class Test {

    public static void main(String[] args) {

        // Creating the object. 
        Phone myPhone = new Phone();

        //Creating another object.
        Color color = myPhone.getColor();
    }

    public void initialise() {

        color.setNum(120);    // This gives an error

    }
}

为了尝试解决这个问题,我决定尝试在类的开头声明对象名称作为类变量,在任何方法之外。这会产生错误,说“非静态变量('对象名'')不能是来自静态上下文的引用”。

import BrandPhone.*;

public class Test {

    Phone myPhone;
    Color color;

    public static void main(String[] args) {

        // Creating the object. 
        myPhone = new Phone();         // Produces error.

        //Creating another object.
        color = myPhone.getColor();    // Produces error. 
    }

    public void initialise() {

        color.setNum(120);     

    }
}

为了尝试解决此问题,我更改了方法,以便代替public static void main(String[] args) {...}而不是public void newObjects() {...}。当我尝试运行它时会产生另一个错误,说“Class”Assignment.Test“没有主方法。”

我是Java的新手,所以我不确定如何解决这个问题 - 所有类main的形式拥有public static void main(String[] args) {...}方法}?如果是这样,我是否可以从主方法开始并将其留空,然后继续创建新方法?

3 个答案:

答案 0 :(得分:0)

我不完全确定你要做什么。但是,如果在声明和初始化颜色后执行此操作,color.setNum(120)应该可以正常工作。

Color color = myPhone.getColor();
color.setNum(120);

答案 1 :(得分:0)

您正在尝试访问范围之外的颜色变量,您可以将其直接传递给方法(如下所示),将其设置为静态变量或只在main()方法中调用setNum。

公共课测试{

public static void main(String[] args) {

    // Creating the object. 
    Phone myPhone = new Phone();

    //Creating another object.
    Color color = myPhone.getColor();

    initialise(color);
}

public static void initialise(Color colorToSet) {

    colorToSet.setNum(120);

}

}

答案 2 :(得分:0)

您还应提供Phone和Color类文件,以提供项目的封装外观。但是,根据你的主要;以下将有效。如果你从main()进行静态调用,那么另一个方法也应该是静态的,如果也在Test类中。实例化您的对象Color,然后调用setter方法调用方法; color.setNum(120);

public static void main(String[] args) {

    // Creating the object. 
    Phone myPhone = new Phone();

    //Creating another object.
    Color color = myPhone.getColor();
    color.setNum(120); 
}