为什么我不´在我的构造函数方法中不需要使用static吗?

vlju58qv  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(342)

我´我用一个名为addcustomer的静态方法在java中创建了一个类,它为我返回了这个类的一个示例,如下所示:

import java.util.ArrayList;

public class Customer {
    private ArrayList<Double> transactions;
    private String name;

    public static Customer addCustomer(String name, Double transaction){
        this.name = name;
        return new Customer();
    }
}

它在addcustomer方法的第一行给出了一个错误

this.name = name;

因为我可以´不要在静态方法中使用非静态变量,这对我来说完全有意义。但后来我尝试为同一个类创建一个私有构造函数(使用name和transactions值),并在addcustomer方法中使用它而不是customer()。这样地:

private Customer(String name, Double transaction){
        this.name = name;
        transactions = new ArrayList<Double>();
        transactions.add(transaction);
    }

    public static Customer addCustomer(String name, Double transaction){
        return new Customer(name,transaction);
    }

我以为我必须在构造函数中添加static修饰符,因为静态方法addcustomer(),但是我的ide说了´构造函数中不允许使用。而且,这并不重要´对我来说没有任何意义,我可以像这样使用addcustomer()方法(没有静态in构造函数),那么为什么即使它´它不是一个静态的方法,它里面的变量也不是?

rkue9o1l

rkue9o1l1#

我会这么做:

import java.util.ArrayList;

public class Customer {
    private ArrayList<Double> transactions;
    private String name;

    public Customer(String name, Double transaction) {
        this.name = name;
    }
}

得到一个 Customer 类型,你只要 Customer customer = new Customer(<name>, <transaction>) . 如果你想打电话 Customer.addCustomer(<name>, <transaction>) 如上图所示,您可以使用:

import java.util.ArrayList;

public class Customer {
    private ArrayList<Double> transactions;
    private String name;

    public Customer(String name, Double transaction) {
    this.name = name;
    }

    public static Customer addCustomer(String name, Double transaction) {
        return new Customer(name, transaction);
    }
}

构造函数方法必须与类同名(区分大小写)。它也需要 public ClassName ,没有通常的返回值。

相关问题