继承关系图谱如下:

         Person
           |
     --------------
     |            |
  Programmer    ScalaLearner
     |            |
  -----------    -----------
  |         |    |         |
JavaProg  PyProg ScalaProg

代码实现如下:

abstract class Person(val name: String, val age: Int) {
  def eat(): Unit = {
    println(s"$name is eating.")
  }
}

trait Skill {
  def skill(): Unit
}

class Programmer(name: String, age: Int) extends Person(name, age) with Skill {
  override def skill(): Unit = {
    println(s"$name is a programmer.")
  }
}

class ScalaLearner(name: String, age: Int) extends Person(name, age) with Skill {
  override def skill(): Unit = {
    println(s"$name is learning Scala.")
  }
}

class JavaProg(name: String, age: Int) extends Programmer(name, age) {
  override def skill(): Unit = {
    super.skill()
    println(s"$name is a Java programmer.")
  }
}

class PyProg(name: String, age: Int) extends Programmer(name, age) {
  override def skill(): Unit = {
    super.skill()
    println(s"$name is a Python programmer.")
  }
}

class ScalaProg(name: String, age: Int) extends ScalaLearner(name, age) with Programmer with Skill {
  override def skill(): Unit = {
    super.skill()
    println(s"$name is a Scala programmer.")
  }
}

测试代码如下:

val javaProg = new JavaProg("Tom", 25)
javaProg.eat()
javaProg.skill()

val pyProg = new PyProg("Jerry", 23)
pyProg.eat()
pyProg.skill()

val scalaProg = new ScalaProg("Bob", 30)
scalaProg.eat()
scalaProg.skill()

输出结果如下:

Tom is eating.
Tom is a programmer.
Jerry is eating.
Jerry is a programmer.
Bob is eating.
Bob is learning Scala.
Bob is a programmer.
Bob is a Scala programmer.
``
需求:现实生活中有很多同学学习过 Java 和 Python我们将其称为Python 程序员 Java 程序员 他们都有姓名和年龄 都要吃饭 都有自己所掌握的技能skill 不同的是 部分的 Java 程序员和 Python 程序员来到我们函数式编程的课程中进行学习之后掌握了 Scala为今后从事基于 Spark 的大数据应用开发打下良好基础 实现更好的就业。请用所学 模拟该场景。难度指数★★★★

原文地址: https://www.cveoy.top/t/topic/c8oW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录