亞裡士多德或許是認真研究
類型
概念的第一人
他曾談及
魚類和鳥類
的問題
在世界首例面向對象語言Simula
中
第一次用到了這樣的一個概念
所有對象——盡管各有特色——都屬於某一系列對象的一部分
這些對象具有通用的特征和行為
在Simula
中
首次用到了class這個關鍵字
它為程序引入了一個全新的類型(clas和type通常可互換使用
見注釋)
Simula是一個很好的例子
正如這個名字所暗示的
它的作用是
模擬
(Simulate)象
銀行出納員
這樣的經典問題
在這個例子裡
我們有一系列出納員
客戶
帳號以及交易等
每類成員(元素)都具有一些通用的特征
每個帳號都有一定的余額
每名出納都能接收客戶的存款
等等
與此同時
每個成員都有自己的狀態
每個帳號都有不同的余額
每名出納都有一個名字
所以在計算機程序中
能用獨一無二的實體分別表示出納員
客戶
帳號以及交易
這個實體便是
對象
而且每個對象都隸屬一個特定的
類
那個類具有自己的通用特征與行為
因此
在面向對象的程序設計中
盡管我們真正要做的是新建各種各樣的數據
類型
(Type)
但幾乎所有面向對象的程序設計語言都采用了
class
關鍵字
當您看到
type
這個字的時候
請同時想到
class
反之亦然
建好一個類後
可根據情況生成許多對象
隨後
可將那些對象作為要解決問題中存在的元素進行處理
事實上
當我們進行面向對象的程序設計時
面臨的最大一項挑戰性就是
如何在
問題空間
(問題實際存在的地方)的元素與
方案空間
(對實際問題進行建模的地方
如計算機)的元素之間建立理想的
一對一
對應或映射關系
如何利用對象完成真正有用的工作呢?必須有一種辦法能向對象發出請求
令其做一些實際的事情
比如完成一次交易
在屏幕上畫一些東西或者打開一個開關等等
每個對象僅能接受特定的請求
我們向對象發出的請求是通過它的
接口
(Interface)定義的
對象的
類型
或
類
則規定了它的接口形式
類型
與
接口
的等價或對應關系是面向對象程序設計的基礎
下面讓我們以電燈泡為例
Light lt = new Light();
lt
on();
在這個例子中
類型/類的名稱是Light
可向Light對象發出的請求包括包括打開(on)
關閉(off)
變得更明亮(brighten)或者變得更暗淡(dim)
通過簡單地聲明一個名字(lt)
我們為Light對象創建了一個
句柄
然後用new關鍵字新建類型為Light的一個對象
再用等號將其賦給句柄
為了向對象發送一條消息
我們列出句柄名(lt)
再用一個句點符號(
)把它同消息名稱(on)連接起來
從中可以看出
使用一些預先定義好的類時
我們在程序裡采用的代碼是非常簡單和直觀的
[注釋] 有些人進行了進一步的區分
他們強調
類型
決定了接口
而
類
是那個接口的一種特殊實現方式
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26912.html