9.Scala继承和多态

一.继承

//父类
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)
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值