私はまずは語彙の問題があると思います。
C++(および多くの言語)では、class
はtype
です。実際に何かを構築するための青写真として考えることができます。
- それは、それが適用される制限について説明し、それらの属性
- を操作する方法を説明し
- を開催している属性を説明します。これは、「ユーザー補助」
object
があるさ実際にクラスをインスタンス化することによって生成された、つまり、青写真が説明したものを構築します。多かれ少なかれ属性の束です。同じ青写真のいくつかの家を持つことができるのと同じクラスのいくつかのオブジェクトを持つことができます:その物理的な場所は明白な理由で異なっていることに注意してください:)
今、典型的なアクセシビリティレベルは、public
,protected
およびprivate
です。予想通り
public
は、やや少ない簡単です、誰もがいずれかの属性やメソッド
protected
へのアクセス権を与えられていることを意味します。これは、オブジェクトまたはその子だけが属性(悪いアイデア*)またはメソッドにアクセスできることを意味します。 (プラス、C++、friend
秒で)
private
のみ、そのクラスのオブジェクト(とない子どもが)(、C++で、friend
秒プラス)属性やメソッドにアクセスする可能性があることを意味
注:アクセシビリティのレベルがどのようなものであっても、オブジェクトは同じクラスのオブジェクトのすべての属性とメソッドにの制限なしのアクセスを持っています。
(*)現在のところポップアップしても、一般にprotected
属性を使用することは悪い考えです。カプセル化のポイントは、それだけでなく、誰がデータにアクセスできるかを正確に制御することによって、そのクラスがの不変式(単純な例では、格納する配列サイズを別にするには、「サイズ」が実際に配列内のアイテムの数を常に表していることを確認する必要があります)。 注:この制限は、というシールをC#などの階層にできる場合には当てはまりません。
のサブクラスである: 'protected'は。プライベートのように機能しますが、サブクラスは保護されたメソッド/データにもアクセスできる点が異なります。もちろん、コンパイラはあなたのアクセスがインターフェイスに準拠していることをチェックします。プライベート・ロックは、基本クラスのプライベート・インタフェースからサブクラスをロックします。 – justin
私はコンセプトを混ぜていると思います。 「クラスの目的」とは何ですか?この文脈では、クラスとクラスのオブジェクトは基本的に同じです。 – Gorpik