抽象类概念
抽象类是一种不能被实例化的类,抽象类中包括了若干不能完整定义的方法,这些方法有子类去扩展定义自己的实现。
1,如果在父类中,有某些方法不能立即实现,而需要依赖不同子类来覆盖,重写实现自己的不同方法实现,此时可以将父类中的这些方法不给出具体实现,只有方法签名,这种方法就是抽象方法。
2,而一个类中如果有一个抽象方法,name类就必须用abstract来声明为抽象方类,此时抽象类是不可以实例化的
3,在子类中覆盖抽象类多的抽象方法,不需要使用override关键字
抽象类和继承成
object AbstractTest{
def main(args: Array[String]): Unit = {
val dog = new Dog
dog.name
println(dog.id)
println(dog.name)
println( dog.m1(2))
println(dog.m2(3))
}
}
/**
*
*/
abstract class Animal{
//抽象类中可以定义没有初始化的属性,称为抽象字段
var id:Int
//具体字段
var name:String = "小黑"
//定义抽象方法
def m1(x:Int):Unit
//定义具体方法
def m2(x:Int):Int= x+2
}
//实现抽象类
class Dog extends Animal{
/**
* 如果实现父类中未实现的成员是,override可以省略
* 如果这个成员是父类中已经实现的成员,必须使用override
*/
//重载了父类的具体方法
override def m2(x: Int): Int = super.m2(x)
//重写了父类的抽象字段
override var id:Int = 11
//重写了父类的抽象方法
override def m1(x: Int): Unit = {println("HelloWorld")}
}