簡體   English   中英

如何在toString twin toStrung的所有方法中訪問類字段變量?

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

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