1.extends关键字、重写字段和方法、超类的构造:
1.1 扩展类:
扩展类使用extends,使用继承给出子类需要而超类没有的字段和方法,或者重写超类的方法。和java一样,可以将类声明为final,这样这个类将不能被继承。也可以将字段或者方法声明为final,这样,字段和方法不能被重写(override)。下面程序例子中,Employee类继承Person类。
1.2 重写方法、字段:
Scala中重写一个非抽象方法必须使用override修饰符。在scala中调用超类方法和java完全一样,使用super关键字。
1.3 使用超类构造器:
类有一个主构造器和任意数量的辅构造器,而每个辅构造器必须以对先前定义的辅构造器或主构造器的调用开始。那么,子类的辅助构造器最终都会调用主构造器,只有主构造器可以调用超类的构造器。
调用Employee的主构造方法
class Employee(name:String, age:Int, val salary:Double) extends Person(name,age)
这里有val修饰的salary字段代表是Employee的成员,在调用Employee的主构造器时,也调用了Person的主构造器。
Person类的主构造器Person(val name:String ,val age:Int),定义了name和age两个成员,同时还定义了一个成员school。
将类和主构造器交织在一起可以带来更精简的代码。类的参数就是主构造器的参数。
package com.vip.scala.packages /** * 功能:继承相关操作的实现。 * Date:2016-11-02 */ class Person(val name:String ,val age:Int) { println("You constructed the Person Class!!!") val school = "BJTU" override def toString() = { "This is the person.toString()!" } } class Employee(name:String, age:Int, val salary:Double) extends Person(name,age){ println("You constructed the Employee Class!!!") override val school = "SJTU" override def toString() = { super.toString() + "This is the employee.toString()!" } } object OverwriteOperations { def main(args:Array[String]) = { val emp1 = new Employee("Tom",23,880238) val per1 = new Person("Jak",46) println("emp1's school: " + emp1.school) println("per1's school: " + per1.school) println(emp1.name) } }
转载于:https://blog.51cto.com/6216083/1868313