99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Scala 組合和繼承–概述

2018-09-28 18:36 更新

組合和繼承–概述

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

從本篇開始繼續(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ì)就在正軌上了。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)