簡體   English   中英

如何在靜態方法中訪問靜態和非靜態方法

[英]how to access static and non static method in static method

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);

    }
}

此方法不適用於錯誤非靜態變量,該變量不能從靜態上下文中引用。

您可以在每個位置訪問公共靜態方法,但您只能通過類的實例訪問靜態方法中的非靜態方法

我建議要么將所有內容都設置為靜態(或者使用構造函數進行本地化)。

在將其設置為local時,構造函數可能如下所示:

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() ,而不必擔心靜態和非靜態訪問。

就像Jon Skeet在評論中所說,你可能不希望你的方法是靜態的,這意味着對於班級的所有成員都有一種方法。

如果您需要使用靜態方法,則可以將其傳遞給: static void show(String color)

您應該使用類名訪問的靜態變量

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

}

您可以考慮將Car對象傳遞給靜態方法,而不是創建它的新實例。 “規則”是,靜態方法不能訪問實例變量和方法,但可以接收外部對象並與它們一起玩。

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

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM