オブジェクト指向は愚かな考え。この世は計算式 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0151デフォルトの名無しさん
2015/11/27(金) 09:47:06.34ID:vrZOFMnm内部的にはsetterを呼べるような定義ができるからね。
C#だとこんな感じか?
class Klass {
int _var;
public int var {
get { return _var; }
set { _var = value; }
}
}
つまりこれはプロパティがない言語特有の回避策だよ。
プロパティがある言語では以下のどちらの書き方をしても、
関数が呼ばれる(ことがある)
1. o.set_var(2)
2. o.var = 2
本質的には、値の代入と関数呼び出すは、書き方が違うだけで同じもの。
そして本当にやりたいことは、2の書き方をした時でも、値チェックなどをやって
例外を出したいから、それができる仕組みが必要ってこと。
だからプロパティという仕組みで、2の書き方で関数呼び出しができる構文が作られた。
だけどJavaだけは、それがなかったので、全て関数で書きましょうというやり方が普及してしまった。
Javaでもプロパティという仕組みを作ればよかったのだが、言語仕様を変えずにコーディングルールにしてしまった。
変数直接代入するしかない言語では全部関数で書く。
プロパティがある言語では、値代入=関数呼び出しにできる。
直接の変数代入はやったらだめ。
■ このスレッドは過去ログ倉庫に格納されています