1. 定义基类与派生类
知识点:
类的定义:使用class关键字定义类。
方法的定义:在类中定义方法以实现特定功能。
属性的定义:使用变量来表示对象的状态。
参考点:
如何定义一个基类及其属性和方法。
在Scala中,基类定义了共有的属性和方法,派生类可以继承这些属性和方法,并根据需要进行重写。
class Animal1() {
var name = "" // 定义属性,表示动物的名字
def run(): Unit = { // 定义方法,表示动物的跑动行为
println("TE.Animal run")
}
}
知识点:
继承:使用extends关键字实现类的继承。
方法重写:使用override关键字重写父类的方法。
参考点:
如何创建一个派生类并重写父类的方法。
class Dog1 extends Animal1() {
override def run(): Unit = { // 重写run方法,表示狗的跑动行为
println("dog is")
}
}
文章:
同样地,我们可以创建另一个派生类Cat1,它也重写了run方法。
class Cat1 extends Animal1() {
override def run(): Unit = { // 重写run方法,表示猫的跑动行为
println("cat is running...")
}
}
2. 多态与方法调用
类名:Test19_1
知识点:
多态:通过父类引用调用派生类的方法。
方法参数:定义方法时使用父类类型作为参数类型。
参考点:
如何定义一个接受父类类型参数的方法,并传入派生类实例。
文章:
在Scala中,多态允许我们通过父类的引用调用派生类的方法。以下是一个示例,展示了如何定义一个接受Animal1类型参数的方法,并传入Dog1和Cat1的实例。
object Test19_1 {
def main(args: Array[String]): Unit = {
val d1 = new Dog1() // 实例化Dog1对象
val c1 = new Cat1() // 实例化Cat1对象
run(d1) // 调用run方法,输出:dog is
run(c1) // 调用run方法,输出:cat is running...
}
// 定义一个接受Animal1类型参数的方法
def run(obj: Animal1): Unit = {
obj.run() // 调用传入对象的run方法
}
}
完整代码块
// 基类Animal1定义
class Animal1() {
// 动物的名字属性
var name = ""
// 动物的跑动行为
def run(): Unit = {
println("TE.Animal run")
}
}
// 派生类Dog1定义,继承自Animal1并重写run方法
class Dog1 extends Animal1() {
// 重写run方法,表示狗的跑动行为
override def run(): Unit = {
println("dog is")
}
}
// 派生类Cat1定义,继承自Animal1并重写run方法
class Cat1 extends Animal1() {
// 重写run方法,表示猫的跑动行为
override def run(): Unit = {
println("cat is running...")
}
}
// 包含main方法的对象,用于演示多态性
object Test19_1 {
// main方法,程序入口点
def main(args: Array[String]): Unit = {
// 实例化Dog1和Cat1对象
val d1 = new Dog1()
val c1 = new Cat1()
// 调用run方法,演示多态性
run(d1) // 输出:dog is
run(c1) // 输出:cat is running...
}
// 定义一个接受Animal1类型参数的方法
def run(obj: Animal1): Unit = {
// 调用传入对象的run方法
obj.run()
}
}
通过以上示例,我们可以看到Scala中类的定义、继承、方法重写以及多态的基本用法。这些概念是面向对象编程的基础,有助于构建更复杂的应用程序