Scala面向对象编程:方法重写与多态

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中类的定义、继承、方法重写以及多态的基本用法。这些概念是面向对象编程的基础,有助于构建更复杂的应用程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值