我們通常認為存取控制是“隱藏實施細節”的一種方式。 將資料和方法封裝到類內後, 可生成一種資料類型, 它具有自己的特徵與行為。 但由於兩方面重要的原因, 訪問為那個資料類型加上了自己的邊界。 第一個原因是規定客戶程式師哪些能夠使用, 哪些不能。 我們可在結構裡構建自己的內部機制, 不用擔心客戶程式師將其當作介面的一部分, 從而自由地使用或者“濫用”。
這個原因直接導致了第二個原因:我們需要將介面同實施細節分離開。 若結構在一系列程式中使用, 但使用者除了將消息發給public 介面之外,
我們現在是在一個物件導向的程式設計環境中, 其中的一個類(class)實際是指“一類物件”, 就象我們說“魚類”或“鳥類”那樣。
在一些早期OOP 語言中, 如Simula-67, 關鍵字class 的作用是描述一種新的資料類型。 同樣的關鍵字在大多數物件導向的程式設計語言裡都得到了應用。 它其實是整個語言的焦點:需要新建資料類型的場合比那些用於容納資料和方法的“容器”多得多。
在Java 中, 類是最基本的OOP 概念。 它是本書未採用粗體印刷的關鍵字之一——由於數量太多, 所以會造成頁面排版的嚴重混亂。
為清楚起見, 可考慮用特殊的樣式創建一個類:將public 成員置於最開頭, 後面跟隨protected、友好以及private 成員。 這樣做的好處是類的使用者可從上向下依次閱讀, 並首先看到對自己來說最重要的內容(即public 成員, 因為它們可從檔的外部訪問), 並在遇到非公共成員後停止閱讀, 後者已經屬於內部實施細節的一部分了。 然而, 利用由javadoc 提供支援的注釋文檔(已在第2 章介紹), 代碼的可讀性問題已在很大程度上得到了解決。
於介面和實施細節仍然混合在一起,