簡體   English   中英

類的公共成員如何導致Java破壞?

[英]How public members of a class causes havoc in java?

類的公共成員如何導致Java破壞? 有人可以舉例說明嗎? 我試圖造成這種情況,但無法成功。 我只是發現它們等同於“受保護的”訪問修飾符。

它允許無效值,破壞封裝。

public class Clock {
    public int hours;
    public int minutes;
}

然后,以不相關的代碼...

Clock clock = new Clock();
clock.hours = 42;
clock.minutes = 99;

通過setter和getter方法使它們私有,可以封裝以強制使用適當的值。

public class Clock {
    private int hours;
    private int minutes;
    public void setHours(int hours) {
        if (hours < 0 || hours > 23) throw new IllegalArgumentException("bad range");
        this.hours = hours;
    }
    // Likewise for "setMinutes" method.
}

這是有關Java封裝的教程頁面,介紹了封裝的好處。 報價:

  • 可以將類的字段設置為只讀或只寫。

  • 一個類可以完全控制其字段中存儲的內容。

  • 類的用戶不知道該類如何存儲其數據。 類可以更改字段的數據類型,並且該類的用戶不需要更改任何代碼。

我相信這一切都取決於您設計的應用程序/程序。

將成員聲明為私有無疑具有優勢。

But on the other hand,

如果您設計一個點類,用戶將繼承該點類並使用它來繪制各種形狀(正方形,矩形,圓形),那么您可能會考慮將成員x,y,z公開。

例:

class Point{

    public double x = 0.0;
    public double y = 0.0;
    public double z = 0.0;

}

這樣做的好處是; 矩形,正方形等類可以直接訪問點

說;

class Square extends Point{

    private Point p;

    p.x = 4.0;
    p.y = 10.0;
    p.z = 0;

    // Instead of using double x = p.getX(); double p.setX(5.0);
}

希望這可以幫助。

閱讀以下文章; 它應該可以幫助您。

  1. 來源1
  2. 來源2
  3. 來源3

暫無
暫無

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

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