Scala类的继承,抽象类定义,接口定义

1. 继承

1.1. 扩展类

在Scala中扩展类的方式和Java一样都是使用extends关键字

1.2. 重写方法

在Scala中重写一个非抽象的方法必须使用override修饰符

1.3. 类型检查和转换

Scala Java
obj.isInstanceOf[C] obj instanceof C
obj.asInstanceOf[C] (C)obj
classOf[C] C.class

1.4. 超类的构造

package cn.toto.scala.day2

/**
  * trait相当于是Java8中的接口实现
  */
trait Flyable {
  //这里不是抽象的,因为它已经实现了
  def fly() : Unit = {
    println("I can fly")
  }

  //这里相当于是抽象类
  def fight() : String
}

//定义一个抽象类
abstract class Animal {
  def run() : Int
  val name : String
}

//继承类使用extend,实现接口使用with
class Human extends Animal with Flyable {
  val name = "abc"

  //在Scala中重写一个非抽象方法必须用override修饰
  override def fight(): String = {
    "fight"
  }

  //在子类中重写超类的抽象方法时,不需要使用override关键字,写了也可以
  def run(): Int = {
    1
  }

  //打印几次"AVC"
  val t1,t2,(a,b,c) = {
    println("ABC")
    (1,2,3)
  }
}

你可能感兴趣的:(#,Scala(多范式的编程语言))