继承
扩展类
extends关键字
class Employee extends Person {
...//some codes
}
重写方法
override关键字
超类的构造
class Employee(name: String, age: Int, val salary: Double) extends Person(name, age)
class Employee(name: String, age: Int, val salary: Double) extends Person(name, age)
class Employee(name: String, age: Int, val salary: Double) extends Person(name, age)
重写字段
abstract class Person {
def id: Int
...
}
class Student(override val id: Int) extends Person {
...
}
匿名子类
val alien = new Person("Fred") {
def greeting = "Greetings, Earthiling! my name is Fred!"
}
def meet(p: Person{def greeting: String}) {
println(p.name + "says:" + p.greeting)
}
抽象类
abstract关键字
abstract class Person(val name: String) {
def id: Int
}
子类重写超类:
class Employee(name: String) extends Person(name) {
def id = name.hashCode
}
抽象字段
抽象字段就是一个没有初始值的字段
abstract class Person {
val id: Int
var name: String
}