[英]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.