继承的作用:代码复用,提高扩展性和维护性
当多个类存在相同的属性和方法时,可以从这些类中抽象出父类,在父类中定义公共的属性和方法,子类继承父类即可
子类继承了所有属性,私有属性不可以直接访问,需要通过公共的方法访问
object ExtendsDemo {def main(args: Array[String]): Unit = {val dog = new Dogdog.printMsg()dog.roar()// dog.eat // 该方法无法访问,因为是 protected 修饰的,只能在子类中访问,同包中不能访问}}// 父类(基类)class Animal {var name: String = _protected var age: Int = _// color 属性在子类中无法访问private var color: String = _protected def eat(): Unit = {println("eating~~~")}def roar(): Unit = {println("roaring~~~")}}// 子类class Dog extends Animal {def printMsg(): Unit = {this.name = "dog"this.age = 22eat()println(s"name=$name, age=$age")}override def roar(): Unit = println("汪汪汪~~~")}
默认:什么地方都可以访问
protected:只有子类可以访问
private:只有本类或伴生对象可以访问
重写方法
重写一个非抽象非私有的方法需要使用 override 关键字,调用超类的方法使用super关键字
class A {protected def fun1() { println("haha") }}class B {override def fun1() { println("xixi") }}
