Scala-Scala语言的面向对象(六)Scala中的继承

Posted on 2020-05-31 23:07  MissRong  阅读(207)  评论(0)    收藏  举报

大数据技术之Scala

======第一篇:Scala编程语言=====

Scala语言的面向对象(六)Scala中的继承

Scala和Java一样,使用extends关键字扩展类。

案例一:Employee类继承Person类

 

案例二:在子类中重写父类的方法

案例三:使用匿名子类

Scala代码实现:

 

package mianxiangduixiang.lei

/**
  * 继承-1
  * 父类:Person 人
  * 子类:Employee 员工
  * 用员工继承Person
  */
class Extends {

}
//定义一个父类
class Person(val name:String,val age:Int){
  //定义函数
  def sayHello():String="Hello "+name+" and the age is "+age
}
//定义一个子类
//使用override关键字将子类的属性覆盖掉父类的属性
class Employee(override val name:String, override val age:Int, val salary:Int)extends Person(name,age){
  override def sayHello(): String = "子类中的sayHello"

}
object Extends{
  def main(args: Array[String]): Unit = {
    //创建Person对象-父类对象
    val person = new Person("Tom",20)
    println(person.name+"\t"+person.age)
    println(person.sayHello())

    //创建Employee对象-子类对象
    val employee=new Employee("Mike",22,10000)
    println(employee.name+"\t"+employee.age+"\t"+employee.salary)
    println(employee.sayHello())

    //通过匿名子类来实现继承:没有名字的子类
    var p3:Person=new Person("Mary",21){
      override def sayHello(): String = "匿名子类中的sayHello"
    }
    println(p3.sayHello())
  }
}

 

案例四:使用抽象类。abstract关键字

抽象类中包含抽象方法,抽象类只能用来继承。

 

Scala代码实现

 

package mianxiangduixiang.lei
/**
  * 继承-2
  * 抽象类
  */
//父类:抽象类--交通工具类
abstract class Vehicle{
  //定义抽象方法-但不需要实现
  def checkType():String{

  }
}
//子类:自行车、汽车,从父类继承
class Car extends Vehicle{
  override def checkType(): String = "I am a car"
}
class Bike extends Vehicle{
  override def checkType(): String = "I am a bike"
}
object Extends2 {
  def main(args: Array[String]): Unit = {
    var v1:Vehicle=new Car
    println(v1.checkType())
    var v2:Vehicle=new Bike
    println(v2.checkType())
  }
}

 

案例五:使用抽象字段(抽象属性)。抽象字段就是一个没有初始值的字段

Scala代码整体实现:

 

package mianxiangduixiang.lei

/**
  * 继承
  * 抽象字段
  */
abstract class Person1{
  //定义抽象字段
  val id:Int
  val name:String
  //Employee2(val id:Int,val name:String) 主构造器,注意:参数名要和父类中的相同
}
abstract class Employee extends Person1{

}
class Employee2(val id:Int)extends Person1 {
  val name:String="no name"
}
object Extends3 {

}

 

 

 

 

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3