Java 主目录中对象的方法

Java 主目录中对象的方法,java,oop,Java,Oop,是否可以在类中的方法中实例化对象,然后在main中使用实例化对象的方法之一?我可以修复以下代码吗 public class Test { public void Testmethod() { someclass a = new someclass(); } public static void main(String[] args) { a.methodfromsomeclass(); } } 有三个问题

是否可以在类中的方法中实例化对象,然后在main中使用实例化对象的方法之一?我可以修复以下代码吗

    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
。这些都是非常基本的东西,我建议你通过一个教程,例如,因为你似乎有一些基本的问题。