No.1ベストアンサー
- 回答日時:
classにおけるprivate等のことですね。
隠蔽とは即ち隠すことです。
何処から?
classの外部からです。
classにおけるアクセス指定子には「private:」「protected:」「public:」の三種類があります。
このうちpublicは外部からのアクセスを全て許可する指定になりますから、構造体におけるメンバーと同様に外部からアクセスすることが出来ます。
次にprivateですが、基本的に外部からのアクセスをシャットアウトします。
つまり、この指定を受けたメンバーデータ(あるいはメンバー関数)は内部からのみのアクセスを許可します。
勿論、データからデータへのアクセスというのはありませんから、この場合同じclass内のメンバー関数からアクセスされることになります。
このようにすることによって、そのクラスで定義された、決まった手続き(class内のメンバー関数)のみを通してメンバーデータに変更を与える様に制限することが出来るのです。
即ち、これをデータの隠蔽と呼びます。
そして、最後に残ったprotectedについてですが、これもprivateに準じます。
最大の違いは、同じclass内のみではなく、そのclassの派生クラスにもアクセスが許可されている点です。
人間に例えてみましょう。(この場合自分=class)
public・・・どんな人が触っても良いもの
private・・・自分のみが触って良いもの
private・・・自分以外に、子供や孫も触って良いもの
と言った感じです。
例えで説明されるのを嫌う向きもあるようですので、その場合後半は無視なさって下さい。
No.2
- 回答日時:
すみません、前回の誤りの訂正と補足です。
まずは訂正から。
人間に例えて、の三番目はprotectedです。
失礼しました。
次に補足ですが、データの隠蔽による効能が説明不足でした。
先程も書きましたが、privateやprotectedを指定した場合、指定されたメンバーデータやメンバー関数にアクセスするものは、同じclassやそのclassの派生classのメンバー関数に限定されます。
これによって、予想しない変数の取り扱いを防ぐことが出来るのです。
例えば、100を超える値を設定をしてはいけないメンバーデータに対して101や200といった値を設定されることを確実に防ぐことが出来るのです。
これが構造体のメンバーやpublicで指定されたメンバーデータであったらどうでしょうか。
外部のどんな関数や式で使用されるか判りませんから、その結果誤った値が設定されることもあり得るわけです。
これが隠蔽による効能です。
それともう一つ補足を。
classを定義する際に何れのアクセス指定も受けていない部分はprivate扱いとなります。
これは、classのデフォルトの属性がprivateだからです。
(ちなみにclass内では、アクセス指定子が表記された部分から次のアクセス指定子が表記されるまでが、そのアクセス指定を受けた範囲になります。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 政治 左翼はなぜ歴史修正主義者なのか? 5 2023/01/22 06:11
- 倫理・人権 武漢肺炎隠蔽病変異株多発なのに、中国の女性報道官は、自分たちの事を棚に上げしれ~っと嘘つくのですか? 3 2023/01/05 21:53
- 賃貸マンション・賃貸アパート 【賃貸アパート エアコンが隠蔽配管について】 今更な話なのですが 昨年の夏、賃貸のアパートを契約しま 2 2023/05/07 16:14
- 経済 中国経済は アメリカを追い抜くどころか。 いまや 数字の隠蔽 嘘 全てにおいて 先進国の信用を失った 5 2023/07/17 21:41
- 日本語 日大・林真理子理事長 隠蔽指摘に怒り「非常に遺憾。隠蔽という言葉がどこから出てくるのか」「対応は適切 6 2023/08/09 08:13
- メディア研究 日本と韓国、どっちが隠蔽体質ですか? 4 2023/03/17 15:30
- 政治 なぜ日本は国の問題を隠蔽しようとするのでしょうか? 13 2023/01/03 08:56
- メディア・マスコミ まともなメディアがあったら・・・ 2 2022/11/29 20:37
- 邦楽 日本語の音楽の隠語を教えてください踊る→性行為をするなどよろしくお願いしますm(_ _)m 5 2023/02/26 14:25
- 電気工事士 6.6kVケーブル単芯325sq-1.5kmの遮蔽銅テープ抵抗値は何Ω? 1 2023/05/02 21:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テンプレートの特殊化でコンパ...
-
インスタンス内から自分のクラ...
-
動的配列の構造体の受け渡しに...
-
Ruby on Rails 「attr_accessor...
-
VBA/GetTickCountの49.7日の境...
-
ブロック2 Ruby認定試験対策問題
-
singletonメソッドへのアクセス
-
railsチュートリアル5章の演習
-
メソッド定義の際の引数で
-
エラー・・
-
【Ruby on Rails】モデルのメソ...
-
再帰に関する質問です。
-
クラスメソッドのインスタンス...
-
プログラミングのクラス、イン...
-
Rails4でJSONのParseErrorを判定
-
PHP DB トランザクション
-
名前空間
-
Rubyのprettyprintについて
-
javaへの変換
-
Ruby バブルソート
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラス名やモジュール名の競合...
-
テンプレートの特殊化でコンパ...
-
class roomとclassroom どちら...
-
HSTLやSSTL等のI/Oピン
-
Rails AR 深い階層のテーブル参照
-
What class are you in? には何...
-
rails3初心者 年齢を表示する
-
redirect先でredirect元の変数...
-
No route matches [GET] "/post...
-
変数の隠蔽とは?
-
syntax error 一行で書くと
-
c#のマクロ定義について
-
railsのform_forの使い方
-
Rubyについて質問です
-
2つのクラスがお互いのポイン...
-
【ruby】【文法】スパークラス...
-
メソッド定義の構文のdefって
-
「arg」は何の略?
-
教えてください。vb5.0
-
get() と find() の違いについて
おすすめ情報