Scala 面向接口编程

Posted wq3435

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala 面向接口编程相关的知识,希望对你有一定的参考价值。

1.如果要实现一个接口,前边没有extends关键字就可以使用extends,如果有要使用with关键字

 

2.Scala 中的接口支持多种继承,类或者抽象类不支持多种继承

 

3.抽象属性:未被实例化的属性

  定义一个抽象的属性: val name : String,在实现的子类中直接进行赋值。

 

4.处理类可以混入接口外,Scala类的实例的对象也可以混入接口,以扩展当前对象实例的功能

package com.dtspark.scala.basics

trait Logger{
  def log(message: String){
    println("Logger: " + message)
  }
}

class Loggin(val name: String) extends Logger{
  def loggin{
    println("Hi, welcome ! " + name)
    log(name)
  }
}

trait RichLogger extends Logger{
  override def log(message: String){
    println("RichLogger: " + message)
  }
}

object HelloTrait {
  def main(args: Array[String]): Unit = {
    new Loggin("DTSpark").loggin        //Hi, welcome ! DTSpark
                                        //Logger: DTSpark
    
    val personLoggin = new Loggin("DTSpark") with RichLogger        //混入,好处:类有一个默认的实现,随时可以扩展第三方实现
    personLoggin.loggin                        //Hi, welcome ! DTSpark
                                            //RichLogger: DTSpark
  }
}

 

6.当继承有多个trait时,多个trait中有同一个方法时,调用的顺序是从由往左,形成一个调用链条。

 

7.

//********* trait 中一部分是抽象的,一部分是具体的; 如下是 工厂方法 设计模式
trait Information{
  def getInformation: String //抽象的
  def checkIn: Boolean = {
    getInformation.equals("Spark")
  }
}

class Passenger(val name: String) extends Information{
  def getInformation = name;
}
//*************

 

以上是关于Scala 面向接口编程的主要内容,如果未能解决你的问题,请参考以下文章

scala学习笔记-面向对象编程之Trait(13)

Scala编程入门---面向对象编程之Trait

Scala核心编程_第08章 面向对象编程(中级补充)--java动态绑定与静态绑定

Scala核心编程_第08章 面向对象编程(中级补充)--java动态绑定与静态绑定

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程