Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个类中使用相同名称的静态和非静态方法JAVA_Java_Static - Fatal编程技术网

在一个类中使用相同名称的静态和非静态方法JAVA

在一个类中使用相同名称的静态和非静态方法JAVA,java,static,Java,Static,我知道在一个类中重写一个方法是不可能的。但是有没有一种方法可以将非静态方法用作静态方法呢?例如,我有一个方法,就是添加数字。我希望这个方法对对象和没有对象都有用。在不创建其他方法的情况下,是否可以执行类似的操作 编辑: 我的意思是,如果我让一个方法是静态的,我需要它接受参数,如果我创建了一个已经设置了变量的对象,那么在我的对象上再次使用相同的参数调用函数将非常不舒服 public class Test { private int a; private int b; pr

我知道在一个类中重写一个方法是不可能的。但是有没有一种方法可以将非静态方法用作静态方法呢?例如,我有一个方法,就是添加数字。我希望这个方法对对象和没有对象都有用。在不创建其他方法的情况下,是否可以执行类似的操作

编辑: 我的意思是,如果我让一个方法是静态的,我需要它接受参数,如果我创建了一个已经设置了变量的对象,那么在我的对象上再次使用相同的参数调用函数将非常不舒服

public class Test {

    private int a;
    private int b;
    private int c;

    public Test(int a,int b,int c)
    {
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public static String count(int a1,int b1, int c1)
    {        
        String solution;
        solution = Integer.toString(a1+b1+c1);
        return solution;
    }


    public static void main(String[] args) {

       System.out.println(Test.count(1,2,3));
       Test t1 = new Test(1,2,3);
       t1.count();
    }

}
我知道代码不正确,但我想展示我想做什么

但是有没有一种方法可以将非静态方法用作静态方法呢

不,不可能

如果需要在静态和非静态上下文中使用此方法,请将其设置为静态。但是,不可能采用相反的配置

但是有没有一种方法可以将非静态方法用作静态方法呢

不,不可能


如果需要在静态和非静态上下文中使用此方法,请将其设置为静态。然而,相反的配置是不可能的。

将其设置为静态,然后它可以与object一起使用,也可以不使用object

 public class MyTest() {
     public static int add() {
         System.out.println("hello");
     }
 }

MyTest.add(); //prints hello

MyTest myobject = new MyTest();
myobject.add(); //prints hello

将其设为静态,则可以与对象一起使用,也可以不使用对象

 public class MyTest() {
     public static int add() {
         System.out.println("hello");
     }
 }

MyTest.add(); //prints hello

MyTest myobject = new MyTest();
myobject.add(); //prints hello
我希望这个方法对对象和没有对象都有用。 有没有可能做这样的事情而不创造另一个 方法

您将不得不创建另一个方法,但您可以让非静态方法调用静态方法,这样您就不会重复代码,如果您希望将来更改逻辑,您只需要在一个地方执行

public class Test {
    private int a;
    private int b;
    private int c;

    public Test(int a, int b, int c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public String count() {
        return count(a, b, c);
    }

    public static String count(int a1, int b1, int c1) {
        String solution;
        solution = Integer.toString(a1 + b1 + c1);
        return solution;
    }

    public static void main(String[] args) {
        System.out.println(Test.count(1, 2, 3));
        Test t1 = new Test(1, 2, 3);
        System.out.println(t1.count());
    }
}
我希望这个方法对对象和没有对象都有用。 有没有可能做这样的事情而不创造另一个 方法

您将不得不创建另一个方法,但您可以让非静态方法调用静态方法,这样您就不会重复代码,如果您希望将来更改逻辑,您只需要在一个地方执行

public class Test {
    private int a;
    private int b;
    private int c;

    public Test(int a, int b, int c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public String count() {
        return count(a, b, c);
    }

    public static String count(int a1, int b1, int c1) {
        String solution;
        solution = Integer.toString(a1 + b1 + c1);
        return solution;
    }

    public static void main(String[] args) {
        System.out.println(Test.count(1, 2, 3));
        Test t1 = new Test(1, 2, 3);
        System.out.println(t1.count());
    }
}


为什么不在对象中静态地调用它呢?您尝试过什么?请发布您的代码。您最好将该方法设置为静态,这样您就可以在静态或非静态情况下调用它们,前提是该方法不需要操作实例变量(这没有意义)。如果你能提供更多的细节,我们可以帮你更多。我很惊讶人们对这个问题投了反对票。他不理解静态方法的正确使用,但这是一个合理的问题。我编辑了我的帖子,解释了我想做什么,也许这有助于理解。为什么不在对象中简单地称之为静态方法呢?你尝试过什么?请发布您的代码。您最好将该方法设置为静态,这样您就可以在静态或非静态情况下调用它们,前提是该方法不需要操作实例变量(这没有意义)。如果你能提供更多的细节,我们可以帮你更多。我很惊讶人们对这个问题投了反对票。他不理解静态方法的正确使用,但这是一个合理的问题。我编辑了我的帖子,解释了我想做什么,也许这有助于理解。我投了反对票,因为这已经在评论和回答中提出了。另外,你甚至没有成功地正确格式化你的代码。同样,它也不能回答他的问题。答案是:“不”。“你没提吧!”达里詹:我回答这个问题是为了解决行动问题,而不是像“是”或“是”这样的测验no@Jean-弗朗索瓦·萨瓦德如果你们能看到时差的话,我开始写作时并没有回答或评论。我投了反对票,因为这已经在评论和回答中提出了。另外,你甚至没有成功地正确格式化你的代码。同样,它也不能回答他的问题。答案是:“不”。“你没提吧!”达里詹:我回答这个问题是为了解决行动问题,而不是像“是”或“是”这样的测验no@Jean-FrançoisSavard如果你能看到时差,当我开始写作时,没有答案或评论。当我的静态方法需要参数才能工作时,我应该如何在静态上下文中使用它?Java中的一些功能可以将对象变量复制到方法中?我不明白这是如何回答这个问题的。如果您只有一个静态方法,即使您从实例调用它,它也不会真正在非静态上下文中运行(即您无法访问对象字段)。当静态方法需要参数才能工作时,我应该如何在静态上下文中使用它?Java中的一些功能可以将对象变量复制到方法中?我不明白这是如何回答这个问题的。如果你只有一个静态方法,即使你从一个实例调用它,它也不会在非静态上下文中运行(也就是说你不能访问对象字段)。我只是不知道这两个都有,这个:
publicstringcount()
和这个
publicstaticstringcount(inta1,intb1,intc1)
是合法的,这正是我想要做的。我只是不知道这两个都有,这个:
publicstringcount()
和这个
publicstaticstringcount(inta1,intb1,intc1)
是合法的