1.概述
如果类中有抽象字段或者抽象方法,那么该类就应该是一个抽象类
- 抽象字段:没有初始化值的变量就是抽象字段
- 抽象方法:没有方法体的方法就是一个抽象方法
2.格式
//定义抽象类
abstract class 抽象类名 {
//定义抽象字段
val/var 抽象字段名:类型
//定义抽象方法
def 方法名(参数:参数类型,参数:参数类型...):返回值类型
}
3.案例
需求:
- 设计4个类,表示上述图中的继承关系
- 每个形状都有自己求面积的方法,但是不同的形状计算面积的方法不同
代码:
object demo {
//定义抽象类
abstract class Shape{
def area():Double;
}
//创建Square(正方形)类
class square(length:Int) extends Shape{
override def area(): Double = return length*length;
}
//创建rectangle(长方形)类
class rectangle(length:Int,wide:Int) extends Shape{
override def area(): Double = return length*wide;
}
//创建circle(圆形)类
class circle(R:Int) extends Shape{
override def area(): Double = return Math.PI*R*R;
}
def main(args: Array[String]): Unit = {
var area1=new square(2);
println(area1.area());
var area2=new rectangle(2,3);
println(area2.area());
var area3=new circle(2);
println(area3.area());
}
}