Scalascala抽象类
文章目录
- 抽象类
- 定义
- 抽象方法
- 抽象字段
抽象类
和Java语言一样,scala中也可以定义抽象类
定义
如果类的某个成员在当前类中的定义是不包含完整的,它就是一个抽象类
- 不完整定义有两种情况:
1.方法没有方法体(抽象方法)
2.变量没有初始化(抽象字段)
定义抽象类和Java一样,在类前面加上abstract
关键字
// 定义抽象类
abstract class 抽象类名 {// 定义抽象字段val 抽象字段名:类型// 定义抽象方法def 方法名(参数:参数类型,参数:参数类型...):返回类型
}
抽象方法
示例
- 设计4个类,表示上述图中的继承关系
- 每一个形状都有自己求面积的方法,但是不同的形状计算面积的方法不同
步骤
- 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中,也可以定义抽象的字段。如果一个成员变量是没有初始化,我们就认为它是抽象的。
定义语法
abstract class 抽象类 {val/var 抽象字段:类型
}
示例说明
- 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 Student6val p2 = new Policeman6println(p1.WHO_AM_I)println(p2.WHO_AM_I)}
}
Scalascala抽象类
文章目录
- 抽象类
- 定义
- 抽象方法
- 抽象字段
抽象类
和Java语言一样,scala中也可以定义抽象类
定义
如果类的某个成员在当前类中的定义是不包含完整的,它就是一个抽象类
- 不完整定义有两种情况:
1.方法没有方法体(抽象方法)
2.变量没有初始化(抽象字段)
定义抽象类和Java一样,在类前面加上abstract
关键字
// 定义抽象类
abstract class 抽象类名 {// 定义抽象字段val 抽象字段名:类型// 定义抽象方法def 方法名(参数:参数类型,参数:参数类型...):返回类型
}
抽象方法
示例
- 设计4个类,表示上述图中的继承关系
- 每一个形状都有自己求面积的方法,但是不同的形状计算面积的方法不同
步骤
- 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中,也可以定义抽象的字段。如果一个成员变量是没有初始化,我们就认为它是抽象的。
定义语法
abstract class 抽象类 {val/var 抽象字段:类型
}
示例说明
- 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 Student6val p2 = new Policeman6println(p1.WHO_AM_I)println(p2.WHO_AM_I)}
}
发布评论