如何在静态方法中访问静态和非静态方法

时间:2016-03-21 17:28:52

标签: java static non-static

public class Car {

    static int model = 2005;
    static String name = "corvert";
    private String color;

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    static void show() {
        System.out.println("model" + amodel + "name" + name + "color" + this.color);

    }
}

此方法不能使用错误的非静态变量,这不能从静态上下文中引用。

5 个答案:

答案 0 :(得分:0)

您可以在每个位置访问公共静态方法,但您只能通过类的实例访问静态方法中的非静态方法

答案 1 :(得分:0)

我建议将所有内容设置为静态(或使用构造函数进行本地化)。

当使它成为局部时,构造函数可能如下所示:

private int model;
private String name, color;
public Car(int model, String name, String color) {
    this.model = model;
    this.name = name;
    this.color = color;
}

// setters and getters

public void show() {
    System.out.println("model" + amodel + "name" + name + "color" + this.color);
}

现在您可以使用Car car = new Car(2005, "Corvet", "Blue");然后使用car.show(),而不必担心静态和非静态访问。

答案 2 :(得分:0)

就像Jon Skeet在评论中所说的那样,你可能不希望你的方法是静态的,这意味着该类的所有成员都有一种方法。

如果您觉得需要使用静态方法,可以将其传递给:static void show(String color)

答案 3 :(得分:0)

您应该使用类名

访问的静态变量
static void show() {
    System.out.println("model" + amodel + "name" + name + "color" + Car.color);

}

答案 4 :(得分:0)

您可以考虑将Car对象传递给静态方法,而不是创建它的新实例。 &#34;规则&#34; 是静态方法无法访问实例变量和方法,但它可以接收外部对象并使用它们。 < / p>

static void show(Car car) {
        System.out.println("model" + model + "name" + name + "color" + car.color);

    }
}