abstract class Table {
private val records: Int
}
プライベートメンバーにアクセスするには、抽象クラスのインスタンスを作成する必要がありますか?抽象クラス、private valとvar classメンバを宣言できないのはなぜですか?
abstract class Table {
private val records: Int
}
プライベートメンバーにアクセスするには、抽象クラスのインスタンスを作成する必要がありますか?抽象クラス、private valとvar classメンバを宣言できないのはなぜですか?
私は彼らが、コンクリートにする方法がないため、これは想像:records
はTable
にプライベートなので
class Foo extends Table {
override val records = 3
}
は、失敗するでしょう。
Table
は役に立ちません。私はそれが傷つくことを見ることができません何か、ちょうどそれはほとんど確実にプログラマーの間違いを示しています。
@ Owenの答えを少し拡張するには:プライベートメンバーを宣言してください。
abstract class Table {
private val records: Int = 0
}
ただし、抽象プライベートメンバーを宣言することはできません。どうして?抽象クラスを継承する具象クラスは抽象メンバをオーバーライドする必要があり、プライベートメンバをオーバーライドできないためです。だから、Table
を拡張する具体的なクラスは一切持てません。