8.4.6 抽象类
Scala 的抽象类的概念和 Java 的抽象类的概念是一样的, 都是表示的不能实例化的类.
Scala 的抽象类也是使用的关键字abstract
抽象类能有哪些成员:
普通类有的抽象类都可以有.
抽象字段
没有初始化值的字段
var a抽象方法
没有方法实现
def foo(name:String): Int
下面就是一个抽象类:
abstract class Animal {
var name = "大黄" // 普通字段
var age: Int // 抽象字段
def say(): Unit ={ // 普通方法
}
def cry() // 抽象方法
}
说明:
abstract关键字只用作class前,抽象字段和抽象方法前不能添加 abstract 关键字. 抽象类的价值更多是在于设计,是设计者设计好后,让子类继承并实现抽象类(即:实现抽象类的抽象方法)
抽象类不能被实例化
抽象类不一定要包含
abstract方法。也就是说,抽象类可以没有abstract方法一旦类包含了抽象方法或者抽象属性,则这个类必须声明为
abstract抽象方法不能有主体,不允许使用
abstract修饰。如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法和抽象属性,除非它自己也声明为
abstract类抽象方法和抽象属性不能使用
private、final来修饰,因为这些关键字都是和重写/实现相违背的。子类重写抽象方法不需要
override,写上也不会错。