
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
> 可視性という表現は、決して間違いではありませんよ。
Javaという文脈では、間違いです。Javaでは、可視性(visiblity)はパッケージの正しい理解にもつながってくるので、UMLの意味(というか、要するによその村の意味)で理解すべきではありません。
No.6
- 回答日時:
>どのようなときにどれを使えばいいのか
>具体的なシチュエーションを教えて欲しいです
これは、なかなか文章では難しいです。
アクセス制御は、バグ対策が主な目的です。
アクセス制御のありがたさは、
短いプログラムでは、あまり感じられない事でしょう。
つまり、クラスをたくさん作るようなプログラムにおいて
特に価値があります。
なのでここでは、アクセス制御の使い方の例を紹介します。
private:基本的に全てのメンバ変数は、
private指定にしておくべきでしょう。
privateなメンバ変数を、
他のクラスから書き換えたいのならば、
それ専用のメソッドを用意しましょう。
これは、めんどくさく感じますが、
他のクラスから、
全てのメンバ変数にアクセスするわけではありません。
protected:これは、親クラスを継承した、
子クラスでアクセスする変数に対して使います。
当然、親クラスを継承していないクラスからは、
アクセスできません。
しかし、Javaのprotectedは、C++と違って同じパッケージの中なら、どのクラスからでもアクセスできるので、私は、変な仕様だと思っています。
public:ちゃんと作ればpublicを使用する機会は、
あまり無いでしょう。
しかし、プログラム全体で利用する定数を定義する時に使えます。
例えば、定数のみを定義したクラスを作った時などです。
そもそも変数に対するアクセス制御は、バグを防ぐためです。
しかし、定数は書き換えが出来ませんから、
この場合は、問題ないわけです。
ちなみに定数は、final指定子をつければ実現可能です。 public final int MAX_NUM = 5;
また、public指定により、
違うパッケージからでもアクセスできます。
package(指定なし):ご存知でしょうが、
同じパッケージ内のクラスならアクセスできます。
----------------------------------------------------------------
以上を総合して考えると、
ryunan_198さんが、必要性がわからないとおっしゃるのも
わかる気がします。特にprotectedの仕様が疑問です。
個人で、趣味や学習で作る程度ならば、
private以外は、事実上大差がありません。
仕事や、個人でも大規模なプログラムを作る時には、
重要になってきます。
No.5
- 回答日時:
可視性という表現は、決して間違いではありませんよ。
UML用語ですから。UMLの可視性を具体的にプログラミング言語
であるJavaで実現しようとすると、public,protected等の
アクセス制御によって具現化するということです。
例えば、UMLのオペレーションの具体的な実現方法が、
Javaでは、メソッドやコンストラクタを使いますし、
C++では、メンバ関数という方法によって具象化したりするということです。
そこで本題ですが、可視性は基本的に低くするべしとされます。
可視性を下げる唯一の目的は、バグの入る込む可能性を下げるためです。
これは、直感的にも解るでしょう。とはいいつつも、可視性が低すぎて
融通が利かないというような自体も生じますし、アクセスのための
手続きは煩雑になりアクセスのオーバーヘッドは大きくなります。
ですから、基本的には上記2つのトレードオフです。
トレードオフ問題ですから、そう簡単には結論が言える問題ではありません。
具体例を上げてみても初心者の人には理解できるかどうか疑問なので
省略しますが、疑問をもたれて具体的に質問されるという時点で、
多くのプログラマーよりも優れているといえるでしょう。
何しろ、可視性に関して具体的に説明できる人が少なくともここにはいないんですから。
私にも、初心者の人に可視性を具体例を挙げて理解させてあげるだけの
能力は残念ながらありません。
No.4
- 回答日時:
Visibleとは、単純名(前にドット連結のない単一名)がスコープ内であることと、そのスコープ内で(同名のローカル変数などによって)日陰者(shadowing)になっていない状態を指します。
private, public等のアクセス制御は、みなさま体験的にもご存じのとおりです。
参考URL:http://java.sun.com/docs/books/jls/third_edition …
No.3
- 回答日時:
可視性とアクセス制御の違いは(少なくともJavaでは)よく分からないけど、
その必要性を説明しろと言われれば、
携帯のダイヤルボタン(0~9、#、*)は押しやすい。
電源ボタンは、長押ししないと電源Offできないのでやや押しづらい。
リセットボタンは隠れていて(普通は)押せない。
これが基本的な考え方。
なんで押しやすさに差があるか?
これを踏まえてJavaの本をもう一回読めばちょっとは分かるかもしれない。

No.2
- 回答日時:
あきれているわけでもないのですが静観していた一人です。
結局、こういうものがなくて苦労したことがない人に、いきなりこういう概念を与えられても、その嬉しさというのはなかなか分からないのかなあ、と思います。習うより慣れろだと思いますよ。
ちなみに、#1さん、これは「可視性」ではないのですか???私はずっと可視性だと思っていました。
http://www.seshop.com/genba/yazawa/archives/09.asp
http://www.ibm.com/developerworks/library/ws-tip …
No.1
- 回答日時:
今まで無回答ということは、たぶん、みんなあきれてるんですよ。
私同様。まず、public,protected,private,package,(default)は、可視性(visiblity)の概念ではなく、アクセス制御です。まず、基本的なJava本を読むべきですし、またこれらの真価は、ご自分の開発経験を通じて納得することになるでしょう。また、Java Coreライブラリのソースコードをはじめ、いろんな実物コードを見て勉強することをおすすめします。お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 子供 男性に必要で女性に不要なモノ(才能・能力・身体的機能など)は何だと思いますか? 3 2022/06/21 17:07
- 哲学 公証・株・契約・金に共通する社会哲理要素とその再応用について 2 2023/06/24 23:11
- XML 2つの行動の違い 1 2022/08/31 19:26
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(社会・学校・職場) ルッキズム、美人はNGイケメンOK? 5 2023/05/03 14:26
- 運転免許・教習所 発達障害持ちですが、診断書なしで免許取れるのか知りたいです。 5 2023/04/20 17:19
- デスクトップパソコン デスクトップパソコン選び方 中級編 7 2022/11/13 17:36
- 日本語 きみの嫁さんは私が見つけてあげるよ。 11 2022/11/13 21:01
- その他(悩み相談・人生相談) 自分プライベートでお金の割り当てを見直してみたところ 大きくジャンル分けして貯金、生活、健康、趣味、 1 2022/07/04 20:15
- 環境・エネルギー資源 昆虫食×クラウドファンディング×SDGs「農業の新しい時代到来」 3 2023/02/22 16:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
そんなにお金がなくても年に1度...
-
3年間同じクラスになる確率
-
今日は こどもの日 で、良い天...
-
重複エラーを解決するには
-
main()を持つクラスが2つ以上...
-
複数のクラスで共通した関数を...
-
ドラクエの「復活の呪文」的な...
-
数学の計算問題。 3年間同じク...
-
java eclipse 型に解決できません
-
恋愛
-
Object.class
-
VC++でMFCアプリ作成中です。
-
Sub-LVDS規格とは
-
VBAクラスで、プロパティを使わ...
-
tomcat上でのpropertiesファイ...
-
僕の出身中学校は200人同級生が...
-
同じパッケージ、クラス名が含...
-
中学生です。 私は教室の黒板に...
-
下記の問合せを行うクエリを、P...
-
dllと同じプロジェクトにする方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じクラスにならない確率を教...
-
そんなにお金がなくても年に1度...
-
河合塾のクラス分けについて
-
今回のクラス替え最悪でした、...
-
3年間同じクラスになる確率
-
java eclipse 型に解決できません
-
恋愛
-
同一パッケージにあるクラスが...
-
小学4年の頃、好きな同級生にス...
-
配列の重複する値とその個数を...
-
main()を持つクラスが2つ以上...
-
EclipseでJSPのコンパイルエラー
-
共通で使う関数を集めたクラス...
-
他クラスのすごくかっこいい同...
-
どこからも呼ばれていない無意...
-
中学生です。 私は教室の黒板に...
-
ネスカフェ エクセラ と UCCク...
-
dllと同じプロジェクトにする方法
-
「隣の芝生は青く見える」現象...
-
コンボボックスのマウスホイー...
おすすめ情報