Java 主目录中对象的方法
是否可以在类中的方法中实例化对象,然后在main中使用实例化对象的方法之一?我可以修复以下代码吗Java 主目录中对象的方法,java,oop,Java,Oop,是否可以在类中的方法中实例化对象,然后在main中使用实例化对象的方法之一?我可以修复以下代码吗 public class Test { public void Testmethod() { someclass a = new someclass(); } public static void main(String[] args) { a.methodfromsomeclass(); } } 有三个问题
public class Test {
public void Testmethod() {
someclass a = new someclass();
}
public static void main(String[] args) {
a.methodfromsomeclass();
}
}
有三个问题需要解决: 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要求它是静态的。您应该做的是编写一个实例方法(例如称为domaintuff
,或者更好的名称),并让您的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
。您需要确保在尝试使用a
之前调用Testmethod
。(它不会因为出现在代码中而自动被调用。您必须编写调用它的代码。)
此外,请遵守正确的命名约定:类以大写字母(
SomeClass
)开头,方法以小写字母开头(testMethod
),如果名称有多个单词,则第二个和后面的单词以大写字母开头。需要解决三个问题:
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要求它是静态的。您应该做的是编写一个实例方法(例如称为domaintuff
,或者更好的名称),并让您的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
。您需要确保在尝试使用a
之前调用Testmethod
。(它不会因为出现在代码中而自动被调用。您必须编写调用它的代码。)
此外,请遵守正确的命名约定:类以大写字母(
SomeClass
)开头,方法以小写字母开头(testMethod
),如果名称有多个单词,则第二个和后面的单词以大写字母开头。No.main()中没有对a
的引用
方法,因此它不能引用它。你实际上想做什么?假设你有几个方法,它们中的每一个都在实例化someclass a
。在这种情况下应该使用a
中的哪一个?否。在main()
方法中没有对a
的引用,因此它不能引用它。你实际上想做什么?假设你有几个方法,它们中的每一个都在实例化someclass a
。在这种情况下,应该使用a
中的哪一个?请给出一个将其作为实例变量的示例。Testmethod()是从另一个类调用的。如果我改为一个实例变量,我还能从另一个类调用它吗?我已经用一个例子编辑了我的答案。Testmethod()
方法属于Test
的一个实例,因此您需要一个Test
对象才能调用Testmethod()
;无论如何,你都不会调用a
。这些都是非常基本的东西,我建议你通过一个教程,例如,因为你似乎在一些基本知识上有问题。请你能给出一个例子,使它成为一个实例变量。Testmethod()是从另一个类调用的。如果我改为一个实例变量,我还能从另一个类调用它吗?我已经用一个例子编辑了我的答案。Testmethod()
方法属于Test
的一个实例,因此您需要一个Test
对象才能调用Testmethod()
;无论如何,你都不会调用a
。这些都是非常基本的东西,我建议你通过一个教程,例如,因为你似乎有一些基本的问题。