Java入門・初心者質問スレ Part.4 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/06/30(金) 22:14:16.54ID:W0OUnv8/
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.3
http://mevius.2ch.net/test/read.cgi/tech/1491306071/
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にして外から触れなくするのが良いのでしょうか?
よろしくお願いいたします
2017/09/11(月) 17:54:49.24ID:a/3J8itn
>>577
パブリックなアクセサ作ったら
カプセル化にならぬよ
フィールドをパブリックで公開するのがモダンなインプリメンテーション
2017/09/11(月) 18:01:03.13ID:QNy5oHUR
>>577
物による
振る舞いを持ったオブジェクトならフィールドもアクセサも公開しない
データならフィールド丸出し
2017/09/11(月) 21:07:20.59ID:+NzND3PL
>>572
orz
2017/09/11(月) 21:12:01.54ID:QpwJ435R
>>577
他のクラスからいつ書き換えられてもいいならpublicにしとけば良い。
書き換えられた時に何かそれにまつわる処理をしたいならprivate等の外から直接アクセスできないやつにしてsetter経由でしか書き換えられないようにすれば良い。
読み出しのみ可能にしたいなら同様にprivate等にしてgetter作っておけば良い。
2017/09/11(月) 21:42:22.72ID:+NzND3PL
>>578
アクセサメソッドはカプセル化というよりは不正な値の代入や取得を防止するのが主な目的だと思うけどね
なのでフィールドはprivateにしてアクセサメソッドをpublicにする
フィールドをpublicで公開するのがモダンなimplementationだというのは初めてきいた
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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