鍍金池/ 教程/ Scala/ 組合和繼承–概述
包對(duì)象
Ordered Trait
組合和繼承–定義 final 成員
基本數(shù)據(jù)類型
Match 表達(dá)式
類和對(duì)象 (三)
操作基本數(shù)據(jù)類型
for 表達(dá)式
組合和繼承–重載成員函數(shù)和方法
類和對(duì)象 (二)
組合和繼承–定義 factory 對(duì)象
組合和繼承–多態(tài)和動(dòng)態(tài)綁定
Trait 的基本概念
if 表達(dá)式
組合和繼承–抽象類
函數(shù)–函數(shù)字面量的一些簡(jiǎn)化寫法
while 循環(huán)
組合和繼承–使用組合還是繼承?
訪問(wèn)控制修飾符
Trait 示例–Rectangular 對(duì)象
組合和繼承–定義參數(shù)化成員變量
組合和繼承–定義無(wú)參數(shù)方法
類和對(duì)象 (一)
函數(shù)–閉包
函數(shù)–類成員函數(shù)
Scala 基本數(shù)據(jù)類型的實(shí)現(xiàn)方法
try 表達(dá)式處理異常
選擇瘦接口還是胖接口設(shè)計(jì)?
組合和繼承–小結(jié)
創(chuàng)建新的控制結(jié)構(gòu)
使用 import
為訪問(wèn)控制修飾符添加作用域
Scala 的類層次關(guān)系
類和對(duì)象 (五)
傳名參數(shù)
柯里化函數(shù)
函數(shù)–頭等公民
組合和組合和繼承–定義 heighten 和 widen 函數(shù)
使用 Package–將代碼放入包中
隱含的 import
所有類的公共子類–底層類型
進(jìn)一步 Scala
函數(shù)–局部函數(shù)
引用包中的代碼
組合和繼承–使用 override 修飾符
組合和繼承–實(shí)現(xiàn)類 Element 的 above,beside 和 toString()方法
類和對(duì)象 (四)
函數(shù)–尾遞歸
沒(méi)有“break”和“continue”的日子
組合和繼承–調(diào)用基類構(gòu)造函數(shù)
減低代碼重復(fù)
函數(shù)–函數(shù)–可變參數(shù),命名參數(shù),缺省參數(shù)
起步 Scala
組合和繼承–擴(kuò)展類
函數(shù)–部分應(yīng)用的函數(shù)
開(kāi)始神奇的 Scala編程之旅
組合和繼承–概述
Trait 用來(lái)實(shí)現(xiàn)可疊加的修改操作

組合和繼承–概述

在前面我們介紹了 Scala 面向?qū)ο蟮囊恍┗靖拍?/p>

從本篇開(kāi)始繼續(xù)介紹 Scala 面向?qū)ο蠓椒ǖ闹R(shí),定義一個(gè)新類的方法主要有兩種模式:一個(gè)通過(guò)組合的方式,新創(chuàng)建的類通過(guò)引用其它類組合而成,通過(guò)這些引用類組合來(lái)完成新功能,而是通過(guò)繼承的方式來(lái)擴(kuò)展基類。為了更好的介紹 Scala 類的組合和繼承,以及抽象類,無(wú)參數(shù)方法,擴(kuò)展類,方法的重載等,我們打算使用一個(gè)現(xiàn)實(shí)的例子來(lái)說(shuō)明,因此本篇首先定義需要解答的問(wèn)題。

我們的需要是定義一個(gè)函數(shù)庫(kù),這個(gè)庫(kù)用來(lái)定義在平面上(二維空間)布局元素,每個(gè)元素使用一個(gè)含有文字的矩形來(lái)表示。為方便起見(jiàn),我們定義一個(gè)類構(gòu)造工廠方法“elem”根據(jù)傳入的數(shù)據(jù)來(lái)創(chuàng)建一個(gè)布局元素。這個(gè)方法的接口定義如下:

elem(s: String) : Element

你可以看到,布局元素使用類型 Element 來(lái)構(gòu)造其模型,你可以調(diào)用 above,和 beside 方法來(lái)創(chuàng)建一個(gè)新的布局元素,這個(gè)新的布局元素有兩個(gè)已經(jīng)存在的布局元素組合而成,例如:下面的表達(dá)式使用多個(gè)布局元素構(gòu)造一個(gè)更大區(qū)域的布局元素:

val column1 = elem("Hello") above elem("***")
val column2 = elem("**") above ("World")
column beside column2

將打印出下面結(jié)果:

Hello ***
*** world

這個(gè)例子使用布局元素,是非常好的一個(gè)例子可以用來(lái)說(shuō)明一個(gè)對(duì)象可以使用更簡(jiǎn)單的對(duì)象通過(guò)組合的方式來(lái)構(gòu)造。后面的幾篇文章將以此為基礎(chǔ),我們將定義一些類,這些類支持使用數(shù)組,線段,矩形(簡(jiǎn)單部件)來(lái)構(gòu)造,并定義組合算子(操作符) above 和 beside。

使用組合算子的概念來(lái)設(shè)計(jì)函數(shù)庫(kù)是一種非常好的方法,它能回報(bào)以考慮在應(yīng)用域構(gòu)建對(duì)象的基礎(chǔ)方法。什么是簡(jiǎn)單對(duì)象?用什么方式能讓更多有趣的對(duì)象通過(guò)簡(jiǎn)單對(duì)象構(gòu)造出來(lái)?組合子是怎么掛在一起的?什么是最通用的組合?它們滿足任何有趣的規(guī)則嗎?如果你對(duì)這些問(wèn)題都有好的答案,你的庫(kù)設(shè)計(jì)就在正軌上了。