[英]How to access class field variable inside all methods from toString twin toStrung?
一旦使用靜態修飾符修改了以上內容,第16行就需要以下語法:getLegs(); toStrung();
//我認為這實際上是在打印最后一個方法更新類字段變量toString。 例如,執行setLegs(); toStrung(); 打印setLegs()的toString。
問題:如何訪問方法中的共享字段? 如果我將其包含在構造函數中怎么辦? 理想情況下,我希望代碼看起來像getLegs()。toStrung(),並使toString成為所有方法的理想選擇。
我的回答:我認為每個方法中的String toString的單獨實例都可以使您完全清白,但語法沒有任何意義。 我知道這是關於我的設計的。 我認為解決方案將是一個新類,但這將返回與類字段變量有關的相同沖突。
public class Dog{
public String toString;
public Dog(String name){
this.name = name;
}
public int getLegs(){
toString = "Dog has " + legs + " legs.";
return legs;
}
public int setLegs(int legs){
toString = getName() + "'s legs have changed from "
+ getLegs() + " to " + legs + ".";
this.legs = legs;
return this.legs;
}
public void toStrung(){
System.out.println(Dog.toString);
}
public static void main(String[] args){
Dog Dundt = new Dog("Dundt");
Dundt.getLegs();
Dundt.toStrung();
}
1)toString()不應為靜態成員。
2)getLegs()不應具有將成員String更改為String的副作用。
3)不應有成員變量String toString。
4)toString()應該返回一個String。
5)名稱需要是成員。
6)腿需要成為成員。
7)toString()應該在運行時從成員生成字符串。
8)您不需要在main中顯式調用toString()。 只需將Dog實例傳遞給println即可為您調用。
9)優良作法是使用@Override注釋對要覆蓋的方法進行注釋。 toString()是Object的成員,並且您將重寫Object。
public class Dog{
private String name;
private int legs = 4;
public Dog(String name){
this.name = name;
}
public int getLegs(){
return legs;
}
public int setLegs(int legs){
this.legs = legs;
return this.legs;
}
@Override
public String toString(){
return "Dog is called " + name + " it has " + legs + " legs.";
}
public static void main(String[] args){
Dog dundt = new Dog("Dundt");
System.out.println(dundt);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.