- ベストアンサー
オブジェクト生成時のセオリーについて
- オブジェクト指向言語において、コンストラクタの返り値はほとんど存在しません。また、コンストラクタで例外を投げることは推奨されません。
- しかし、コンストラクタに引数を渡してインスタンスを生成するクラスの場合、不十分な引数を渡すと使用できないインスタンスが生成されることがあります。
- このような状況において、適切な引数が渡されることを確認するのは生成されるクラス自身か、外部の処理(ファクトリー的なクラス・メソッド)かは一般的なセオリーではありません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- MARU4812
- ベストアンサー率43% (196/452)
関連するQ&A
- オブジェクト指向で分からないことが。
オブジェクト指向で分からないことが。 1.クラスAから、文字列引数を指定して、クラスBがインスタンス化されたオブジェクトを取得する。 (getInstance的メソッド)引数の文字列にマッピングされたオブジェクトを取得する感じ。 2.1.で取得したオブジェクトから、各オブジェクトを取得するメソッドを呼び出し、オブジェクトを取得する。(仮にクラスC) 3.2.で取得したクラスCのメソッドを呼び出す。 このとき、クラスCのメソッド内で、1.で利用された引数を利用したいです。 そもそもクラスCは、1.を経てしか取得されないものの為、再度1.の引数を渡したくありません。 内部的な値なので、スコープpublicのセッターを用意して、クラスA内からの書き換えが出来ては困ります。 こういう場合、どういうクラス設計を行えば良いのでしょうか?
- ベストアンサー
- Java
- インスタンスとオブジェクト 生成
クラスのオブジェクトを生成するときに(newをつかって) ●インスタンスを生成する。 ●オブジェクトを生成する。 と参考書に書いてありますが、言い方はどちらでもいいそうです。 でも、2種類の言い方がるということは厳密には意味が違うような気がするのですが、皆さんはどう思いますか? またどちらの言い方を使っていますか? どちらが正しいのでしょうか?
- ベストアンサー
- Java
- メソッドの引数としてのthisの意味
java初心者です。教えてください。 メソッドの引数としてのthisは何を表しているのですか? いろいろ調べてみてthisには以下の2つの使用法があることがわかりました。 1.インスタンス変数の名前とインスタンスメソッド内のローカル変数名がかぶったときに、メソッド内でインスタンス変数を表すときにthis.変数名とする。 2.あるクラスのコンストラクタ内で、同じクラスの別のコンストラクタを呼ぶときに使う。 しかし、引数としてのthisの意味がわかりません。 具体的には、addMouseListener(this);や、g.drawImage(img,10,10,this);のthisです。 後者の場合はオブジェクトgのインスタンスメソッドなので、thisはオブジェクトgへの参照を表しているのでしょうか?
- ベストアンサー
- Java
- オブジェクト指向について質問
メインのクラスをインスタンスする際にコンストラクターに書かれている処理が実行されますが、オブジェクトが生成された時のイベントに書くのと、どのような違いがありますか? public partial class Form1 : Form{ public Form1()//コンストラクター {処理1} private void Form1_Load(object sender, EventArgs e)//インスタンス時のイベント {処理2} } また、別クラスの中でnewを使ってインスタンスがされ場合、コンストラクターと上記のイベントは同じように発生しますか? public class Form2{ Form1 = new Form1(); } よろしくおねがいします。
- ベストアンサー
- C・C++・C#
- Javaのstaticメソッドの意味を教えて下さい
Javaのstaticメソッドの意味を教えて下さい。 現在の解釈では、staticなメソッドとはインスタンスの生成に依存せず呼び出せる処理のことだと認識しています。逆にstaticでないメソッドは、生成後のインスタンスにしか使えない処理だと理解しています。 しかし、コンストラクタがstaticでないことに気がつき、疑問が生まれました。コンストラクタはstaticではないので、コンストラクタを呼び出す時にはそのクラスのインスタンスが必要になるはずです。しかしこのインスタンスを作るのにもコンストラクタが必要です。コンストラクタを使うためにインスタンスが必要で、インスタンスを作るためにコンストラクタが必要という無限ループになってしまいました。 そこで改めて、staticメソッドの意味を教えて頂きたいです。
- 締切済み
- Java
- インスタンスオブジェクトとはなんなのでしょうか
現在Objective-cを勉強中なのですが、インスタンスオブジェクトの 意味がよくわかりません。ネットで調べても「インスタンス」と 「オブジェクト」それぞれの意味しか出てきません。 インスタンスオブジェクトという単語が出てきた参考書には以下のように 書かれています。 ---------------(引用ここから)------------------- - (int)up{ ・・・ return self; } selfはメッセージを受け取ってそのメソッドの処理をしている インスタンスオブジェクトそのものなので、返り値に対して 続けてメッセージを送ることができる。 ---------------(引用ここまで)--------------------------- どなたかインスタンスオブジェクトの意味をご教示いただけないでしょうか。 以上、何卒よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- setTimeは、返り値がなぜ不要なのでしょうか?
・Dateオブジェクトを見ているのですが、setTimeメソッドが理解できません ・getTimeメソッドだと、「返り値」を受け取れるのに、 setTimeメソッドでは、なぜ「返り値」を受け取れないのでしょうか? ・メソッド名に「set」「get」が付いているので、てっきりセッターゲッターみたいな物だと思ったのですが… ・直接プロパティ値を書き換えるのでしょうか? 参照みたいに ・マニュアルを見たら、「インスタンスを生成した関数を返します。これはデフォルトでは Date コンストラクタです」と書かれているのですが、これはどういう意味なのでしょうか? ・コンストラクタなのに、プロパティ? インスタンスを生成した関数? >このプロパティの値は関数そのものの参照であり、関数の名前を含んだ文字列ではないことに注意してください ・関数そのものの参照って何ですか? ・Dateオブジェクトの実体はどこに存在しているのでしょうか? ▽Date - JavaScript | MDN https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/Date
- ベストアンサー
- JavaScript
- javaで、オブジェクトを生成しないとメソッドは使えないんですか?
javaで、オブジェクトを生成しないとメソッドは使えないんですか? そのように習ったのですが、サブクラスのメソッド定義の中で、オブジェクトを生成せずにスーパークラスのメソッドを使える例(下に簡単に書きました)をみて、分からなくなってしまいました。 おしえてください、よろしくおねがいします。 ------------------------------- class superclass { method_a(){ ~~~~ } } --------------------------- class subclass { method_b(){ super.method_a(); }
- ベストアンサー
- Java
- 抽象クラスのオブジェクトを生成できない理由は?
・抽象クラスは、なぜ(オーバーライドしないと)オブジェクトを生成できないのでしょうか? ・インタフェースみたいに、抽象メソッドしか宣言することができないなら話は分かるのですが… ・抽象メソッドでない普通のメソッドを実装できるのなら、オブジェクトを生成してくれても良いと思うのですが… ・そういう問題ではない?
- ベストアンサー
- Java
- インスタンス生成について
いつもお世話になっております。 今回はインスタンス生成について質問させて下さい。 String クラスのインスタンス生成は、 String str1 = new String(); のように明示的に new 演算子を用いる方法と、 String str2 = "hoge"; のように生成する方法がありますよね。 str2 の方は、JVM が(?) 勝手にコンストラクタを呼び出してくれて、 インスタンスを生成してくれる、という認識でよいのでしょうか? また、明示的に「 new 演算子 + コンストラクタ」でインスタンスを生成する場合と、 そうでない場合の使い分けなどはあるのでしょうか? そもそも String 以外に、このような複数のパターンでインスタンスを生成することができる クラスは他にもあるのでしょうか? 以上、ご教授宜しくお願い致します。
- ベストアンサー
- Java
お礼
回答ありがとうございます。 インスタンス生成時の引数の健全性の評価は、生成されるインスタンスの元となるクラスが保証するべきだ、という考え方でよろしいでしょうか。 C++以外のオブジェクト指向言語ならば例外を投げて対処、C++ならばIsValidのような健全性確認用の関数を設けてチェックということですね。 不変オブジェクトについては、ちょっと勉強不足でした。関数型言語が持つようなパラダイムを一概にオブジェクト指向に取り入れるのは難しいんですね。