2017-03-10 24 views
0

不好意思問一些關於java的基本概念。私有字段,點符號,getter setter方法

我對如何訪問類中的私有字段感到困惑。

例如,我已經定義了一個類:

private class Example{ 
private Timestamp fromdate; 
private Timestamp todate; 
private float amount; 
public example(Timestamp fromdate, Timestamp todate, float amount){ 
    this.fromdate= fromdate; 
    this.todate= todate; 
    this.amount = amount; 
}} 

請問如果我使用構造函數創建一個新的例子類,即

example ex = new example (fromdate, todate, amount) 

我可以訪問聲明的私有字段對於前變量只是由

ex.fromdate,ex.todate,ex.amount ??

何時以及爲什麼我們需要聲明getter和setter方法來獲取對象內的變量,同時我們可以直接使用點符號來獲取類中的字段?

非常感謝

---------------------------編輯----------- ---------------------------

一個問題球員,

請問我是否可以直接使用點符號如果我將上面的類嵌套到另一個類中,獲取私有字段?

例如:

public class ExampleOutterClass{ 
    private class Example(...){...} 
    ---Some Operation to get fromdate, todate, amount)--- 
    Example ex = new Example (fromdate, todate, amount); 
    public Timestamp fromdate = ex.fromdate; 
    public Timestamp todate = ex.todate; 
    public float amount = ex.amount; 
} 

我想在我的Jbuilder的(很老的開發工具ORZ)的上述做法,並發現它的怪異,我可以直接使用點符號來指代私有字段,所以我提出這個問題。

BTW真的感謝您的幫助

+0

你的構造函數看起來不錯。除非你實現公開的getter方法,否則「私人」的想法是讓你不能從外部類訪問。通常需要隱藏課堂的內部運作。 –

+0

Java編碼約定表示您的類名應以大寫字母和帶小寫字母的變量開頭。所以你的類名應該是'Example',它更容易閱讀和理解。 :) – Sufian

+1

嵌套類不完全是外部類的成員,但它們非常相似。就像成員可以訪問任何其他成員一樣(任何方法都可以調用其他成員,甚至在同一類中聲明的私有方法)嵌套類可以訪問所有其他成員,並且可以被他們訪問。然後 – Pshemo

回答

-1

你不能從 類之外,訪問私有字段爲了做到這一點,你需要聲明getter和setter了點。

-1

不,您不能直接從班級以外的對象訪問班級的私人成員。私人成員只能通過同一班級的功能進行訪問。 Getters和Setters是作爲獲取或設置這些值的公共方法創建的。其他類應該使用這些getter和setter來修改私有成員。

您可能會遇到的一個問題是:爲什麼我們需要getter和setter,當您可以將變量公開,然後從另一個類訪問變量?請遵循以下問題:Why use getters and setters?

+0

應該標記爲重複 –

-1

專用字段不能在它們定義的類之外訪問。爲了訪問這些字段,您可以創建getter或setter方法。當你想讓私人成員只能被讀取,或者如果你想要設置成員的值而不讀取時,經常使用Getter和setter方法。

安裝人員和吸氣人員方法通常也用於在返回或設置值之前要修改的值。Ravi爲什麼要使用getter和setter方法而不是簡單地將公共成員變量聯繫起來。

0

由於私人領域無法從課堂外訪問。你是不是能夠通過只accesss:

ex.fromdate,ex.todate,ex.amount

從技術上講,你可以讓他們的公共和使用點表示法來得到你想要什麼方便。爲什麼我們使用「getter」和「setter」?你可能會認爲他們是大多數程序接受的兩種常用方法,他們可能會限制你定期訪問班級成員。而最重要的是,在一些設計模式中是有用的。你可以學習更多關於Javabean有關setter和getter的知識。 https://en.wikipedia.org/wiki/JavaBeans

0

您不允許訪問任何類的私人成員(字段,方法)。

如果你需要控制對你的類的私有成員的訪問,那麼你必須聲明它們是私人的,並提供操作類的實例的方法。

「控制」訪問私有成員的一種方法是定義設置者和獲取者。但在這種情況下,你仍然允許每個人改變一個對象的內部狀態。例如:

public class Point { 
    private double x; 
    private double y; 
    public Point(double x, double y) { 
    this.x = x; 
    this.y = y; 
    } 
    public void setX(double x) { 
    this.x = x; 
    } 
    public double getX() { 
    return x; 
    } 
    // ... setter and getter for y 
} 

另一種方法是定義好的公開API,以供其他人使用。在這種情況下,只有你的班級可以改變其內部狀態。例如:

public class Point { 
    private double x; 
    private double y; 
    public Point(double x, double y) { 
    this.x = x; 
    this.y = y; 
    } 
    public void move(double deltaX, double deltaY) { 
    // some validations can be applied here 
    x += deltaX; 
    y += deltaY 
    } 
}