抽象类(abstract class) 只能单继承
类的⼀一个或者多个⽅方法没有没完整的定义
声明抽象⽅方法不需要加abstract关键字,只需要不写⽅方法体
⼦子类重写⽗父类的抽象⽅方法时不需要加override
⽗父类可以声明抽象字段(没有初始值的字段)
⼦子类重写⽗父类的抽象字段时不需要加override
abstract class Person1{
def speak
var name : String
var age : Int
}
class Student1 extends Person1 {
def speak = {
println("重写了父类的speak方法")
}
var name = "zhangSan"
var age = 20
}
object AbstractClassDemo{
def main(args: Array[String]){
var s = new Student1
print(s.name)
print(s.age)
s.speak
}
}
Scala的类只能够继承单一父类,Trait(特征) 的话就可以继承多个。
Trait是带有实现的接口,同java8节后的default
trait Animal {
def eat(food : String){
println("正在吃"+food)
}
def run
}
trait traitDemo{
def sleep(){
println("睡觉")
}
}
class Dog extends Animal with traitDemo{ //使用with从左边到右边依次构造
override def eat(food : String){ //非抽象必须加override
println("dog正在吃"+food)
}
def run(){ //实现抽象的不用加override
println("撒欢的跑")
}
}
object TraitDemo{
def main(args: Array[String]): Unit = {
var d = new Dog
d.eat("骨头")
d.run()
d.sleep()
}
}