X



Java入門・初心者質問スレ Part.4 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0577デフォルトの名無しさん
垢版 |
2017/09/11(月) 17:39:05.01ID:OENb9hQD
構造体的なものを使いたい時に、クラスを使っているのですが
Public class Hoge {
public int fuga;
public int piyo;
}
とやって、更にgetFuga,setFugaなどのメソッドを実装するのと
メソッドを使わず、利用の中でtest.fuga=3などと直接触るのでは
Java的には前者のほうが推奨なのでしょうか?
(カプセル化?っていうんでしょうか?)

また、その場合にはクラスもPublicではなくPrivateにして外から触れなくするのが良いのでしょうか?
よろしくお願いいたします
0578デフォルトの名無しさん
垢版 |
2017/09/11(月) 17:54:49.24ID:a/3J8itn
>>577
パブリックなアクセサ作ったら
カプセル化にならぬよ
フィールドをパブリックで公開するのがモダンなインプリメンテーション
0579デフォルトの名無しさん
垢版 |
2017/09/11(月) 18:01:03.13ID:QNy5oHUR
>>577
物による
振る舞いを持ったオブジェクトならフィールドもアクセサも公開しない
データならフィールド丸出し
0581デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:12:01.54ID:QpwJ435R
>>577
他のクラスからいつ書き換えられてもいいならpublicにしとけば良い。
書き換えられた時に何かそれにまつわる処理をしたいならprivate等の外から直接アクセスできないやつにしてsetter経由でしか書き換えられないようにすれば良い。
読み出しのみ可能にしたいなら同様にprivate等にしてgetter作っておけば良い。
0582デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:42:22.72ID:+NzND3PL
>>578
アクセサメソッドはカプセル化というよりは不正な値の代入や取得を防止するのが主な目的だと思うけどね
なのでフィールドはprivateにしてアクセサメソッドをpublicにする
フィールドをpublicで公開するのがモダンなimplementationだというのは初めてきいた
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況