需求:现实生活中有很多同学学习过 Java 和 Python我们将其称为Python 程序员 Java 程序员 他们都有姓名和年龄 都要吃饭 都有自己所掌握的技能skill 不同的是 部分的 Java 程序员和 Python 程序员来到我们函数式编程的课程中进行学习之后掌握了 Scala为今后从事基于 Spark 的大数据应用开发打下良好基础 实现更好的就业。请用所学 模拟该场景。难度指数★★★★
继承关系图谱如下:
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.
``
原文地址: https://www.cveoy.top/t/topic/c8oW 著作权归作者所有。请勿转载和采集!