scala定义抽象类与抽象字段

抽象类

和Java语言一样,scala中也可以定义抽象类
定义:
如果类的某个成员在当前类中的定义是不包含完整的,它就是一个抽象类
不完整定义有两种情况:
1.方法没有方法体(抽象方法)
2.变量没有初始化(抽象字段)
定义抽象类和Java一样,在类前面加上abstract关键字
在这里插入图片描述
步骤:
1.创建一个Shape抽象类,添加一个area抽象方法,用于计算面积
2.创建一个Square正方形类,继承自Shape,它有一个边长的主构造器,并实现计算面积方法
3.创建一个长方形类,继承自Shape,它有一个长、宽的主构造器,实现计算面积方法
4.创建一个圆形类,继承自Shape,它有一个半径的主构造器,并实现计算面积方法
5.编写main方法,分别创建正方形、长方形、圆形对象,并打印它们的面积

// 创建形状抽象类
abstract class Shape {
  def area: Double
}

// 创建正方形类
class Square(var edge: Double /*边长*/) extends Shape {
  // 实现父类计算面积的方法
  override def area: Double = edge * edge
}

// 创建长方形类
class Rectangle(var length: Double /*长*/ , var width: Double /*宽*/) extends Shape {
  override def area: Double = length * width
}

// 创建圆形类
class Cirle(var radius: Double /*半径*/) extends Shape {
  override def area: Double = Math.PI * radius * radius
}

object Main6 {
  def main(args: Array[String]): Unit = {
    val s1: Shape = new Square(2)
    val s2: Shape = new Rectangle(2, 3)
    val s3: Shape = new Cirle(2)

    println(s1.area)
    println(s2.area)
    println(s3.area)
  }
}

抽象字段

在scala中,也可以定义抽象的字段。如果一个成员变量是没有初始化,我们就认为它是抽象的。

示例:
1.创建一个Person抽象类,它有一个String抽象字段WHO_AM_I
2.创建一个Student类,继承自Person类,重写WHO_AM_I字段,初始化为学生
3.创建一个Policeman类,继承自Person类,重写WHO_AM_I字段,初始化警察
4.添加main方法,分别创建Student/Policeman的实例,然后分别打印WHO_AM_I

/ 定义一个人的抽象类
abstract class Person6 {
  // 没有初始化的val字段就是抽象字段
  val WHO_AM_I:String
}

class Student6 extends Person6 {
  override val WHO_AM_I: String = "学生"
}

class Policeman6 extends Person6 {
  override val WHO_AM_I: String = "警察"
}

object Main6 {
  def main(args: Array[String]): Unit = {
    val p1 = new Student6
    val p2 = new Policeman6

    println(p1.WHO_AM_I)
    println(p2.WHO_AM_I)
  }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值