「アクセサメソッド」と「コンストラクタ」の違いは何ですか?「アクセサメソッド」と「コンストラクタ」の違いは何ですか?
答えて
コンストラクタは、新しいオブジェクトを初期化します。アクセサは、外部呼び出し元がオブジェクトの状態に関する情報を取得できるようにします。
コンストラクタは、オブジェクトの初期化を行う関数です。これは、クラスの新しいインスタンスが(静的または動的にnew
を使用して)作成されたときに呼び出され、オブジェクトの内部属性を明示的に初期化したり、任意のコードを実行することを可能にします。デストラクタによって補完されます。デストラクタは、オブジェクトが解放されると(解放の直前に)自動的に呼び出されます。例は、配列へのポインタを持つクラスです。コンストラクタで配列を割り当て、デストラクタでコンストラクタに割り当てられたメモリを解放します。
アクセサーメソッド(またはゲッター)は、オブジェクトの内部属性にアクセスできるメソッドです。これは、オブジェクトの特定の属性をカプセル化するためにセッターと並行して使用されます。アクセサーは不変でなければなりません(つまり、オブジェクトの内部状態に影響を与えるべきではありません)。
デストラクターの抜粋では、コンストラクターを含め、クラスのすべてのメソッドをオーバーロードすることができます。同じクラスのオブジェクトのconst参照をとるコンストラクタは、コピーコンストラクタと呼ばれます。デフォルトコンストラクタとして、これはコンパイラによって自動的に生成され、デフォルトではすべての属性がフィールドごとにコピーされます。この動作が常に必要なわけではないので、コピーコンストラクタを実装して、別のオブジェクトを正しくコピーできるようにすることができます(またはコピーを停止することができます - boost :: noncopyableを参照)。
例:
// C++
class Foo {
int i;
public:
// Copy constructor
Foo(const Foo& foo) {
this->i = foo.i;
// Here you can do other stuff, beside raw copying...
}
};
class Bar {
public:
// Constructor
Bar() {
m_foo = new Foo();
}
// Destructor
~Bar() {
delete m_foo;
m_foo = 0;
}
// Getter (hides the actual attribute)
const Foo* getFoo() const { return m_foo; }
// Setter
void setFoo(Foo* foo) {
// Create a copy of Foo
m_foo = new Foo(*foo);
}
private:
Foo* m_foo;
};
FWIWでは、getterとsetterの両方がアクセサです。セッターはもちろん、クラスを変更可能にします。ゲッターは、クラスの内部状態を変更するべきではありません。 –
コンストラクタは、オブジェクトをインスタンス化するために、新しいキーワードを使用したときに実行されるコードのブロックです。 http://beginnersbook.com/2013/03/constructors-in-java/
プライベートフィールドの値を返すためにアクセサメソッドが使用されます。メソッド名の先頭に "get"という接頭辞を付けた命名規則に従います。 http://java.about.com/od/workingwithobjects/a/accessormutator.htm
- 1. デフォルトの(ユーザー定義の)コンストラクタとコンストラクタの違いは何ですか?
- 2. AndroidコンストラクタとonCreate()の違いは何ですか?
- 3. オブジェクト初期化子とコンストラクタの違いは何ですか?
- 4. コンストラクタのnewとメンバー宣言のnewの違いは何ですか?
- 5. コンストラクタでアクセサメソッドを使用できますか?
- 6. コンストラクタとオブジェクトの違い
- 7. difftimeと ' - 'の違いは何ですか?
- 8. A`と ``の違いは何ですか[:] `
- 9. `&`と `ref`の違いは何ですか?
- 10. バックスティックと$()の違いは何ですか?
- 11. `##`と `hashCode`の違いは何ですか?
- 12. "$^N"と "$ +"の違いは何ですか?
- 13. #{} $ {}と%{}の違いは何ですか?
- 14. typedefとの違いは何ですか?
- 15. %Qと%{}の違いは何ですか?
- 16. `==`と `is`の違いは何ですか?
- 17. $と$$の違いは何ですか?
- 18. NodeJS:「./ ..」と「..」の違いは何ですか?
- 19. 、ボイド、evalを、およびJavaScriptでのFunctionコンストラクタの違いは何ですか?
- 20. スカラ:クラスのフィールドとパラメータの間に実質的な違いは、コンストラクタで何
- 21. $ dirtyと$ invalid:違いは何ですか?
- 22. Backbone.jsとPusherapp - 違いは何ですか?
- 23. libspeとlibspe2?違いは何ですか?
- 24. リストと何か([_])と何か(_)の違い
- 25. TypeScript:コンストラクタ内部とそれ以外の変数の宣言との違いは何ですか?
- 26. JSF - @PostConstructとコンストラクタからの直接メソッド呼び出しの違いは何ですか?
- 27. decodeURIComponentとunescapeの違いは何ですか?unescapeの問題は何ですか?
- 28. コロンの配置の違いは何ですか:何かと何か:
- 29. GoogleのDremelとは何ですか? Mapreduceとの違いは?
- 30. 重要な違いは何ですかext2-ext3とext3-ext4の違いは何ですか?
リンゴとオレンジの違いは何ですか?あなたはおそらく、これらのもののそれぞれが何であるかを尋ねているはずです。なぜなら、それらが同等か類似していると思うなら、あなたはそれらの少なくとも1つが何であるか誤解するからです。 –