codecamp

Scala 组合和继承–调用基类构造函数

组合和继承–调用基类构造函数

前面我们定义了两个类,一个为抽象类 Element ,另外一个为派生的实类 ArrayElement。 或许你打算再构造一个新类,这个类使用单个字符串来构造布局元素,使用面向对象的编程方法使得构造这种新类非常容易。比如下面的 LineElement 类:

class LineElement(s:String) extends ArrayElement(Array(s)) {
  override def width = s.length
  override def height = 1
}

由于 LineElement 扩展了 ArrayElement,并且 ArrayElement 的构造器带一个参数(Array[String]),LineElement 需要传递一个参数到它的基类的主构造器。要调用基类构造器,只要把你要传递的参数或参数列表放在基类名之后的括号里即可。例如,类 LineElement 传递了 Array(s)到 ArrayElement 的主构造器,把它放在基类 ArrayElement 的名称后面的括号里:

... extends ArrayElement(Array(s)) ...

有了新的子类,布局元素的继承级别现在看起来就如下图所示:

Scala 组合和继承–定义参数化成员变量
Scala 组合和继承–使用 override 修饰符
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }