8.4.6 抽象类

Scala 的抽象类的概念和 Java 的抽象类的概念是一样的, 都是表示的不能实例化的类.

Scala 的抽象类也是使用的关键字abstract

抽象类能有哪些成员:

  1. 普通类有的抽象类都可以有.

  2. 抽象字段

    没有初始化值的字段

     var a
    
  3. 抽象方法

    没有方法实现

     def foo(name:String): Int
    

下面就是一个抽象类:

abstract class Animal {
  var name = "大黄" // 普通字段
  var age: Int // 抽象字段

  def say(): Unit ={ // 普通方法

  }
  def cry() // 抽象方法
}

说明:

  • abstract 关键字只用作class前, 抽象字段和抽象方法前不能添加 abstract 关键字.

  • 抽象类的价值更多是在于设计,是设计者设计好后,让子类继承并实现抽象类(即:实现抽象类的抽象方法)

  • 抽象类不能被实例化

  • 抽象类不一定要包含abstract方法。也就是说,抽象类可以没有abstract方法

  • 一旦类包含了抽象方法或者抽象属性,则这个类必须声明为abstract

  • 抽象方法不能有主体,不允许使用abstract修饰。

  • 如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法和抽象属性,除非它自己也声明为abstract

  • 抽象方法和抽象属性不能使用privatefinal 来修饰,因为这些关键字都是和重写/实现相违背的。

  • 子类重写抽象方法不需要override,写上也不会错。

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-07-02 08:12:45

results matching ""

    No results matching ""