私はこのようなシンプルなクラスを持っています。スカラーのパラメータのデフォルトの「タイプ」は何ですか?それはヴァルですか?
パラメータがvalかvarかを指定していません。 name
とprice
はどのようなタイプのパラメータですか?あなたがvar
やval
のいずれかとして、クラスのパラメータを宣言する場合
class Car(name:String, price:Float){
}
私はこのようなシンプルなクラスを持っています。スカラーのパラメータのデフォルトの「タイプ」は何ですか?それはヴァルですか?
パラメータがvalかvarかを指定していません。 name
とprice
はどのようなタイプのパラメータですか?あなたがvar
やval
のいずれかとして、クラスのパラメータを宣言する場合
class Car(name:String, price:Float){
}
、それはインスタンス変数になります。いずれかを指定しないと、それはされません。したがって、val
またはvar
のいずれかに相当しません。
クラスパラメータを再割り当てできるかどうかに関しては、クラスパラメータは通常のパラメータと同じように動作し、再割り当てできません。 @ sepp2kによって解答に追加
:あなたはcase class
を使用する場合は、デフォルトではval
次のとおりです。この場合bar
で
case class Foo(bar: Bat)
がpublic
、アクセシビリティのあるval
です。
受け入れられた回答は原則的に正しいです。しかし、実際には、渡されたパラメータがdef
の実装で使用されると、private val
(それに対してprivate def
ゲッターが生成されない点を除いて)と宣言されたように、インスタンスフィールドになります。例えば
:
class Foo(bar: Bar) {
def foo: Bar = bar
}
は
public class Foo {
private final Bar bar;
public Bar foo();
public Foo(Bar);
}
(javap
を使用して)次のJava翻訳に逆コンパイルすることができますが、この詳細についてはまたmy answer on this thread参照してください。