Если вы используете код, подобный следующему, вы заявляете, что name
должен быть абстрактным:
class A {
var name: String
}
Полагаю, вы уже знали это. Так что ваш вопрос скорее носит синтаксический характер.
Ответ - согласованность с другими возможными абстрактными кандидатами .
Предположим, вы хотите сделать что-то вроде этого:
class A {
var variable: String = _ // variable has some default value (probably null)
val value: String = _ // value cannot have any default values, since it cannot be reassigned later.
def method: String = _ // method could return some default value (probably null)
type theType = _ // what should the default type be? (Any perhaps?)
}
Последние три примера даже не компилируются. Теперь предположим, что вы хотите сделать что-то вроде этого:
class A {
var variable: String
val value: String
def method: String
type theType
}
С моей точки зрения, даже тот, кто едва понимает Scala , видит только объявления. Нет никакого способа неверно истолковать их, потому что там нет ничего, кроме деклараций. Единственная путаница возникает, когда вы пришли с другого языка и на секунду предположите, что есть некоторые значения по умолчанию. Но эта путаница исчезла, как только вы увидите первый пример (со значениями по умолчанию). Кстати, ваш класс должен быть частью абстрактной иерархии, чтобы иметь возможность объявлять абстрактные члены, поэтому даже если вы новичок в языке, вы уже получите некоторую дополнительную помощь от компилятора.
Надеюсь, это ответит на ваш вопрос и удачного кодирования.