2017-03-28 69 views
-1

如何访问在其他方法中使用一种方法创建的对象?java:以不同方法访问对象

我想这样做,以便每次创建新方法并且希望在其中使用该对象时,我都不会一次又一次创建相同的对象。这是我对工作类:

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

如果我尝试访问该对象colorinitialise如下所示方法的另一种新的方法,我得到一个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,所以我不知道如何解决这个 - 不所有类都在public static void main(String[] args) {...}形式main方法?如果是这样,我不能只是从一个主要方法开始,并将其留空,然后继续做出新的方法?

+2

可能重复[我想知道静态方法和非静态方法之间的区别](http://stackoverflow.com/questions/3903537/i-want-to-know-the-difference-之间静电法和 - 非静态方法)。我还会读:https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html – alfasin

+0

*“我决定尝试在脚本的开头声明对象名称为类变量”* - Java是**不是*脚本语言*。你称之为“脚本”的是一个*类(源)文件*。用你的措辞清楚!浏览[tutorials](https://docs.oracle.com/javase/tutorial/) –

+1

'myphone'与'myPhone'不同。即使你不关心大小写,java也可以;) –

回答

0

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

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

但是通过这样做,我必须在每次编写新方法时声明并初始化此对象? –

0

您试图访问的颜色变超出范围,你可以直接将它传递给方法(如下图所示),将其设置为静态变量或只是调用setNum在main()方法。

公共类的测试{

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); 

} 

}

0

您还应该提供您的手机和颜色的类文件,提供项目的封装的外观。但是,根据你的主要;以下将起作用。如果你使用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); 
}