Scala 学习:object 和class, trait

本文深入探讨Scala中的object、class和trait概念。object用于替代Java中的static,实现静态成员和伴生对象的功能;class与Java相似,但Scala自动为private变量生成get、set方法;trait支持多重继承,可定义属性和方法体,类似于Java的interface但功能更强大。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

object:

Scala中没有静态修饰符static,在object下的成员全部都是静态的,如果在类中声明了与该类相同的名字的object则该object是该类的“伴生对象”,

可以理解把类中的static集中放到了object对象中,伴生对象和类文件必须是同一个源文件,可以用伴生对象做一些初始化的操作。

class:

和java中的class类似。在Scala声明private变量会Scala编译器会自动生成get,set,在Scala中变量是需要初始化的,如果不声明private默认是public的

trait:

在java中可以通过interface实现多重继承,在Scala中可以通过特征(trait)实现多重继承,不过与java不同的是,

它可以定义自己的属性和实现方法体,在没有自己的实现方法体时可以认为它时java interface是等价的,在Scala中也是一般只能继承一个父类,可以通过多个with进行多重继承。

/usr/local/scala/mycode/exercise2-2.scala:11: error: not found: type Drawable case class Point(var x:Double,var y:Double) extends Drawable{ ^ defined trait Drawable /usr/local/scala/mycode/exercise2-2.scala:12: error: not found: type Point abstract class Shape(var point:Point) extends Drawable{ ^ /usr/local/scala/mycode/exercise2-2.scala:13: error: not found: type Point def moveTo(epoint:Point){ ^ /usr/local/scala/mycode/exercise2-2.scala:11: error: not found: type Shape class Line(var point1:Point,var point2:Point) extends Shape(point1){ ^ /usr/local/scala/mycode/exercise2-2.scala:11: error: not found: type Point class Line(var point1:Point,var point2:Point) extends Shape(point1){ ^ /usr/local/scala/mycode/exercise2-2.scala:11: error: not found: type Point class Line(var point1:Point,var point2:Point) extends Shape(point1){ ^ /usr/local/scala/mycode/exercise2-2.scala:11: error: no arguments allowed for nullary constructor Object: ()Object class Line(var point1:Point,var point2:Point) extends Shape(point1){ ^ /usr/local/scala/mycode/exercise2-2.scala:12: error: not found: type Point override def moveTo(point:Point){ ^ /usr/local/scala/mycode/exercise2-2.scala:25: error: not found: value Point point1 = Point(newPoint1X,newPoint1Y) ^ /usr/local/scala/mycode/exercise2-2.scala:26: error: not found: value Point point2 = Point(newPoint2X,newPoint2Y) ^ /usr/local/scala/mycode/exercise2-2.scala:11: error: not found: type Shape class Circle(var point:Point,var r:Double) extends Shape(point){ ^ /usr/local/scala/mycode/exercise2-2.scala:11: error: not found: type Point cla这是运行结果 帮我查看一下哪里出错
最新发布
03-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值