9.Scala继承和多态

本文深入探讨Scala中的面向对象编程概念,包括继承、抽象类和多态。通过具体代码示例,详细讲解了如何定义和使用类、子类,以及如何实现多态行为,使读者能够理解并掌握Scala面向对象编程的关键特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.继承

//父类
class Person(name:String,age:Int) {
  println("Person ...")
  def walk():Unit = println("walk like a normal person")
}
//子类
//继承关系
class Student(name:String,age:Int,var stuNo:String) extends Person(name,age){
  println("Student ...")
  override def walk():Unit={
    super.walk();//调用父类的walk方法
    println("walk like a elegant swan")
  }
}
object demo{
  def main(args: Array[String]): Unit = {
    //先执行父类构造再执行子类构造
    val student = new Student("Tom",18,"10002")
    //方法重写
    student.walk()
  }
}

二.抽象类

//抽象类
abstract class Person(name:String,age:Int) {
  def walk():Unit
}

object demo{
  def main(args: Array[String]): Unit = {
    //匿名内部类
    val p = new Person("Tom",18){
      override def walk() = {
        println("person object ...")
      }
    }
    p.walk()
  }
}

三.多态

多态也叫"动态绑定",指"在执行期间判断所引用对象的实际类型,根据其实际类型调用其相应的方法"。


abstract class Person(var name:String,var age:Int) {
  def walk():Unit
  //talkTo方法参数为Person类型
  def talkTo(p:Person):Unit
}
class Student(name:String,age:Int) extends Person(name,age){
  private var stuNo:Int = 0
  def walk() = println("walk like a elegant swan")
  //重写
  def talkTo(p:Person) = {
    println("talkTo() method in Student")
    println(this.name + " is talking to " + p.name)
  }
}
class Teacher(name:String,age:Int) extends Person(name,age){
  private var teaNo:Int = 0
  def walk() = println("walk like a elegant swan")
  //重写
  def talkTo(p:Person) = {
    println("talkTo() method in Teacher")
    println(this.name + " is talking to " + p.name)
  }
}
object demo{
  def main(args: Array[String]): Unit = {
    val p1 = new Student("Tom",18)
    val p2 = new Teacher("Jack",34)
    p1.talkTo(p2)
    p2.talkTo(p1)
  }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值