一個(gè)Scala類可以繼承多個(gè)特質(zhì)(trait), 特質(zhì)可能會(huì)要求使用它們的類支持某個(gè)特定特性, 與Java接口不同, Scala特質(zhì)可以給出這些特質(zhì)的缺省實(shí)現(xiàn).

要點(diǎn)如下:

  1. Scala中類只能繼承一個(gè)超類, 可以擴(kuò)展任意數(shù)量的特質(zhì)

  2. 特質(zhì)可以要求實(shí)現(xiàn)它們的類具備特定的字段, 方法和超類

  3. 與Java接口不同, Scala特質(zhì)可以提供方法和字段的實(shí)現(xiàn)

  4. 當(dāng)將多個(gè)特質(zhì)疊加使用的時(shí)候, 順序很重要 ---- 排在后面的特質(zhì)方法先被執(zhí)行

1. Scala類沒有多繼承

把毫不相關(guān)的類組裝在一起, 多繼承沒有關(guān)系, 不過向下面這個(gè)簡(jiǎn)單例子問題就浮出水面了;

class Student {
    val id: Int = 10
    }class Teacher {
    val id: Int = 10
    }

假設(shè)可以有:
class TeacherAssistant extends Student, Teacher { ... }

網(wǎng)友評(píng)論