我想從Ivor Horton的Java書中通過一個簡單的類實現一個二維點的以下代碼。現在私人訪問修飾符的澄清
public class Point
{
//x and y coordinates
private xVal,yVal;
//Constructor
public Point (double x, double y)
{
this.xVal = x;
this.yVal = y;
}
//Constructor
public Point (final Point aPoint)
{
this.xVal = aPoint.xVal;
this.yVal = aPoint.yVal;
}
}
,我不明白的一點是,在第二個構造這需要Point類型作爲參數的對象,新創建的Point對象可以直接訪問參數點對象的實例變量x和y 。這意味着對象的私有成員(方法和變量)可以從相同類型的另一個對象的內部方法中訪問,除了同一類中的方法之外。任何人都可以澄清這個問題,因爲根據我的理解,應該通過getter和setter來訪問arugment對象的變量,因爲它們是私有的。
http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public-default-protected-and-private – Sikorski
你通常不應該修改'Point'的其他實例,因爲這是可能不是你的實例的責任,但由於任何訪問發生在某個'Point'內部,假定每個實例知道如何處理其他實例而不破壞封裝。畢竟你寫了這個課,所以你應該知道你做了什麼。 – zapl