Scala中的基类引用

时间:2015-11-22 06:48:01

标签: scala

我必须在scala中的单个数组/集中存储一组形状类(比如正方形和圆形)。

在C ++中,我们可以在基类指针中存储指向派生类对象的指针。

std::vector<shape*> list;
shape* temp = new square;
list.push_back(temp);

Scala有可能这样吗?如果是这样的代码看起来如何?

2 个答案:

答案 0 :(得分:4)

Scala是一种面向对象语言,为什么会出现问题?

trait Shape
case class Square(x: Int, y: Int, w: Int, h: Int) extends Shape

import scala.collection.mutable.ArrayBuffer

val list = new ArrayBuffer[Shape]
list += new Square(0,0,10,10)

答案 1 :(得分:2)

在Scala中,与Java一样,数组和列表不存储实际元素,它们只将引用存储到实际元素(非基元)。这意味着你可以用数组做同样的事情。

Java数组确实存储了原始数据类型的一些实际元素。 Scala 2.8+具有 @specialized 功能,可防止&#34;原语的装箱&#34;