1. 特质定义与实现
特质名:Shentihao
知识点:
- 特质定义:使用
trait
关键字定义特质。 - 抽象和具体成员:特质中可以定义抽象和具体成员。
参考点:
- 如何定义一个特质以及如何通过类实现特质中的抽象成员。
文章:
在Scala中,特质是一种强大的工具,允许我们定义可以被多个类继承的行为。以下是一个Shentihao
特质的定义,它包含了具体属性、抽象属性、具体方法和抽象方法。
trait Shentihao {
var KM_1 = 5 // 具体属性
var sports: String // 抽象属性
def say(): Unit = {} // 具体方法
def run // 抽象方法
}
class Student1 extends Shentihao {
var sports = "跳绳" // 实现抽象属性
def run(): Unit = {
println("1000米在4.5分钟内跑完") // 实现抽象方法
}
}
object TEZHI {
def main(args: Array[String]): Unit = {
val s1 = new Student1() // 实例化Student1
// s1.run() // 可以调用run方法
}
}
2. 多继承与特质组合
特质名:Beauty
和 wisdom
类名:Girl
知识点:
- 多继承:一个类可以通过扩展多个特质来实现多继承。
- 特质组合:使用
with
关键字组合多个特质。
参考点:
- 如何定义多个特质以及如何通过类实现这些特质。
文章:
在Scala中,多继承是通过特质实现的。以下是一个示例,展示了如何定义两个特质Beauty
和wisdom
,以及如何通过类Girl
实现这些特质。
trait Beauty {
val leg: Double
}
trait wisdom {
val EQ: Int
}
class Girl extends Beauty with wisdom {
val leg = 180
val EQ = 180
override def toString: String = s"leg=$leg 厘米, eq=$EQ"
}
object TEZHI_2 {
def main(args: Array[String]): Unit = {
val girl = new Girl() // 实例化Girl
println(girl) // 输出:leg=180.0 厘米, eq=180
}
}
代码注释
// 定义一个特质Shentihao
trait Shentihao {
// 具体属性,初始值为5
var KM_1 = 5
// 抽象属性,由继承的类实现
var sports: String
// 具体方法,一个空的方法体
def say(): Unit = {}
// 抽象方法,由继承的类实现
def run
}
// 定义一个类Student1,继承自Shentihao特质
class Student1 extends Shentihao {
// 实现Shentihao特质中的抽象属性
var sports = "跳绳"
// 实现Shentihao特质中的抽象方法
def run(): Unit = {
println("1000米在4.5分钟内跑完")
}
}
// 定义一个对象TEZHI,用于测试Student1类
object TEZHI {
def main(args: Array[String]): Unit = {
val s1 = new Student1() // 实例化Student1
// s1.run() // 可以调用run方法
}
}
// 定义一个特质Beauty
trait Beauty {
// 抽象属性leg,表示长度
val leg: Double
}
// 定义一个特质wisdom
trait wisdom {
// 抽象属性EQ,表示智慧
val EQ: Int
}
// 定义一个类Girl,继承自Beauty和wisdom特质
class Girl extends Beauty with wisdom {
// 实现Beauty特质中的抽象属性
val leg = 180
// 实现wisdom特质中的抽象属性
val EQ = 180
// 重写toString方法,返回属性的字符串表示
override def toString: String = s"leg=$leg 厘米, eq=$EQ"
}
// 定义一个对象TEZHI_2,用于测试Girl类
object TEZHI_2 {
def main(args: Array[String]): Unit = {
val girl = new Girl() // 实例化Girl
println(girl) // 输出:leg=180.0 厘米, eq=180
}
}
通过以上示例,我们可以看到Scala中特质的定义、类的实现以及多继承的基本用法。这些概念是Scala面向对象编程的重要组成部分,有助于代码的复用和模块化。