是否可以在类中的方法中实例化一个对象,然后使用main中实例化对象的一种方法?我可以修复以下代码吗?
public class Test {
public void Testmethod() {
someclass a = new someclass();
}
public static void main(String[] args) {
a.methodfromsomeclass();
}
}
答案 0 :(得分:3)
您需要解决三个问题:
1)您已在a
内声明Testmethod
为本地变量。这意味着只能在Testmethod
内访问它。如果你想要一个即使在Testmethod
执行完毕后仍然存活的变量,你应该使它成为Test
的实例变量。这意味着Test
的实例将包含变量,除Test
之外的Testmethod
的实例方法将能够访问它。
声明一个实例变量如下所示:
public class Test {
private someclass a; // please choose a better variable name
//...... other code ..........//
}
2)main
将无法访问实例变量,因为main
是静态的。你也不能让main
非静态; Java要求它是静态的。您应该做的是编写一个实例方法(例如,名为doMainStuff
或更好的名称),并让您的main
创建一个新的Test
对象,像:
public void doMainStuff() {
// something that calls Testmethod
a.methodfromsomeclass(); // use a better name than "a"
// other code
}
public static void main(String[] args) {
new Test().doMainStuff();
}
3)到目前为止你编写它的方式,永远不会构造新的someclass
,因为你永远不会调用Testmethod
。在尝试使用Testmethod
之前,您需要确保致电a
。 (它不会因为它出现在代码中而自动被调用。你必须编写调用它的代码。)
另外,请遵守正确的命名约定:类以大写字母开头(SomeClass
),方法以小写字母(testMethod
)开头,如果名称有多个单词,第二个和后面的单词以大写字母开头。