具有相同名稱的變量是可以的。 私人,公共,靜態,實例,本地方法,塊本地,不管。 Java選擇最接近的一個。它比方法更鬆散。
JLS3#8.3:(這裏只有1這是在第一句說限制)
它是一類聲明體編譯時錯誤名稱相同聲明兩個領域。方法,類型和字段可能具有相同的名稱,因爲它們在不同的上下文中使用,並且通過不同的查找過程(第6.5節)進行消歧。
如果類聲明瞭一個具有特定名稱的字段,那麼該字段的聲明被稱爲隱藏在超類和該類的超接口中具有相同名稱的字段的任何和所有可訪問的聲明。字段聲明還隱藏了封閉類或接口中任何可訪問字段的聲明(第6.3.1節),以及在任何封閉塊中具有相同名稱的任何本地變量,形式方法參數和異常處理程序參數。
如果一個字段聲明隱藏了另一個字段的聲明,則這兩個字段不必具有相同的類型。
一個類繼承自它的直接超類和直接超接口超類和超接口的所有非私有字段,它們都可以在類中被代碼訪問並且不被類中的聲明隱藏。
請注意,超類的專用字段可能可以訪問子類(例如,如果兩個類都是同一類的成員)。儘管如此,私人領域永遠不會被一個子類繼承。
一個類可能會繼承具有相同名稱的多個字段(第8.3.3.3節)。這種情況本身並不會導致編譯時錯誤。但是,任何在類的主體中通過其簡單名稱引用任何這樣的字段的嘗試都會導致編譯時錯誤,因爲這樣的引用是不明確的。
// this is a valid program!
class $
{
$ $;
$ $($ $)
{
class $$ extends $
{
$$ $;
}
return new $$();
}
}
瞭解Java編碼約定 - 您的類名不好。爲什麼你會同時做同一班的繼承和組成? IS-A和HAS-A在同一個對象中。你應該下定決心。 – duffymo 2011-02-16 00:27:54