scala 类定义构造函数与继承

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

1.scala中如何定义类

scala中定义类的方式很简单

class Point(xc:Int,yc:Int)

上面这行代码就定义了一个类
1.首先是关键字class
2.其后是类名 Point
3.类名之后的括号中是构造函数的参数列表,这个例子中是类的两个变量xc,yc,且均为Int类型的数据。

2.类的构造方法

类的定义中可以有多个构造参数。与java中不同的是,scala类名称后直接加上构造函数的参数列表,这个构造函数就是主构造函数。另外,Scala中有只有一个主要构造函数,其他都是辅助构造函数。而且需要注意的是,辅助构造函数必须调用主构造函数或者通过this(…)之间相互调用。
另外与java中不同的一点是,在scala中重写方法,必须加上override关键字,否则编译器会报错!

class Point(xc:Int,yc:Int) {

  var x:Int = xc
  var y:Int = yc

  val isOriginal:Boolean = {
    x == 0 && y == 0
  }

  def this(xc:Int) {
    this(xc,0)
    println("hello,I'm another constructor!")
  }

  def move(dx:Int,dy:Int): Unit = {
    x += dx
    y += dy
  }

  override def toString(): String = "(" + x + ", " + y + ")"
}

再写个客户端代码调用这个类:

object TestPoint {

  def t1(): Unit = {
    val p1 = new Point(10,15)
    println(p1)
    val p2 = new Point(1)
    println(p2)
  }

  def main(args: Array[String]): Unit = {
    t1()
  }
}

将客户端代码run起来

(10, 15)
hello,I'm another constructor!
(1, 0)

##3.继承
scala继承基类很简单,跟java一样会用extends关键字即可。

class MyPoint(xc:Int,yc:Int) extends Point(xc,yc) {

  def sayMyPoint(): Unit = {
    println("location: " + xc + "," + yc)
  }

  override def move(dx: Int, dy: Int): Unit = {
    x += 2*dx
    y += 2*dy
    println("now x is: " + x + ",y is: " + y)
  }
}

调用继承类:

object TestPoint {

  def t2(): Unit = {
    val p1 = new MyPoint(10,15)
    p1.sayMyPoint()
    p1.move(5,5)
  }

  def main(args: Array[String]): Unit = {
    t2()
  }
}

将代码run起来:

location: 10,15
now x is: 20,y is: 25
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值