質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

2139閲覧

カプセル化について

kobahito

総合スコア87

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/10/29 02:34

カプセル化のメリットとして"クラスから複数のオブジェクトを安全に生成できる"というのは正しくないのか?という質問です

Java silver se7の試験勉強をしています。
今使っている参考書の中の問題で、理解できないものがあったのでお教えいただきたく質問しました。

以下の問題です。

__ーーここからーー

カプセル化のメリットとして正しいものは次のどれですか。2つ選択してください。

A.コードから例外を排除できる
B.クラスから複数のオブジェクトを安全に生成できる
C.不変オブジェクトを設計できる
D.オブジェクトが保持するデータを保護できる
E.複数のクラスをパッケージ化する

解説:正解C,D
カプセル化は、操作経由でのアクセスのみを許可することで外部から属性への直接的なアクセスを避け、属性を保護(データ隠蔽)します。また、以下のようなクラス設計をすると、インスタンス化時に指定された値を保持し続け、その後、属性を変更させない不変オブジェクトを作成できます。したがって、選択しC,Dが正しいです。

//不変オブジェクトのクラス定義例
public final class User{
private final String name;
private final int id;
public User(String name,int id){
this.name=name;
this.id=id;
}
public String getName() {
return this.name;
}
public int getId() {
return this.id;
}

}
ーーここまでーー__

以下分からない事
C,Dが正しいことはわかるのですが、
B.クラスから複数のオブジェクトを安全に生成できる
が誤りなのが分かりません。
クラスから複数のオブジェクトを生成する場合、
カプセル化の性質上、それぞれのオブジェクトが互いに干渉し合うという事態を避けることができると思うので
Bはだたしいとしてもいいと思うのですが。

カプセル化について正しく理解できていなくて見当違いな事を言っているかもしれませんが、お教えください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「複数のオブジェクトを安全に生成する」ことと「カプセル化」とは関係がないように思います.
端的に言えば,カプセル化は「クラスのフィールドがすべてprivateになっており,アクセッサ経由でのみその値を取得・変更できる仕組み」であるといえます.
このフィールドがprivateであろうがpublicであろうが,複数のオブジェクトを生成するにあたっては関係がないように思われます.そのため,その選択肢は不正解であると思われます.

投稿2015/10/29 02:40

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kobahito

2015/10/29 03:01

カプセル化についてズレた認識をしていたみたいです。 腑に落ちましたのでベストアンサーとさせていただきます。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問