• ベストアンサー

初歩的な質問です・・・

misokaの回答

  • misoka
  • ベストアンサー率35% (56/160)
回答No.2

> ・インスタンスを作る > ・コンストラクタを定義する > ・メソッド > ・クラスの継承 というのは、「オブジェクト指向」の用語でもあります。 まずは、じっくりと「オブジェクト指向」とは何か、から始めてみる というのも、よいかもしれません。 もっとも、オブジェクト指向という考え方は、世間一般では、理解しづらい ものとされているようなので、始めから完全理解は目指さないほうがよい かもしれません(^^; 参考URLは、オブジェクト指向の解説ページです。 分かりやすいほうだと思いますが、それは、プログラミング経験にも よることなので、何ともいえない部分はあります。 まずは、クラスとインスタンスの関係がどうなっているのか、に 注目してみるとよいでしょう。 頑張って下さい。

参考URL:
http://www.wakhok.ac.jp/~tatsuo/JavaWorld/
saya129
質問者

お礼

たしかにオブジェクト指向自体よくわかりません・・。 でも一つ一つ解決していきたいと思います。 参考のサイト、とてもいい感じです! どうもありがとうございました!(^^)

関連するQ&A

  •  superについて教えて下さい

     superについて教えて下さい  JAVAの初心者です、宜しくお願いします。  「super」についてよくわかりません。 ある本には、「親クラスのコンストラクタを呼び出す」、またある本には、「親クラスのオブジェクトを呼 び出す」、と書かれていました。  ・コンストラクタとオブジェクトとは同じ意味なのでしょうか。  ・また、ある本には、「コンストラクタの継承はされない」とかかれていますが、どのように違うのでしょうか。  ・JAVAのApIには、次のように書かれています。   「paint     public void paint(Graphics g)コンテナをペイントします。このコンテナの子コンポーネントで    あるすべての軽量コンポーネントへペイント要求を転送します。このメソッドが再実装される場合、軽量    コンポーネントが正しく描画されるように super.paint(g) を呼び出さなければなりません。    (以下略)」   super.paint(g)と各意味は、親クラスのメソッドを呼びだすことで、親クラスのメソッドを呼びだす時に  も、superが必要ということでしょうか。  コンストラクタ自体についてよく理解出来ていないのですが  ・そもそもクラス(オブジェクトの生成)にとってどのような役割、意味があるのでしょうか。   オブジェクトの生成すると、デフォルトで自動的に引数なしのコンストラクタが作成されると書かれています  が、  ・作成されること自体にどのような意味があるのでしょうか。  変数の初期化とかをコンストラクタ内で設定するのは意味があるとは思うのですが、、、、

    • ベストアンサー
    • Java
  • 親クラスのコンストラクタは? 引数付きコンストラクタは?

    VisualBasic.NETです。 あるクラスを継承したクラスからインスタンスを作成したときに、派生クラスのコンストラクタは呼び出されると思うのですが、基本クラスのコンストラクタはどうなるのでしょうか? JAVAのように、super() で呼び出す必要があるのでしょうか? 自動で呼び出されるのでしょうか? それとも、そもそも呼び出せないのでしょうか? また、引数の個数が違うコンストラクタは、同じクラス内に設定できるのでしょうか? JAVAのコードを移植しようと考えているのですが、出来るのかどうかが分からずに悩んでいます。 ご存じの方、よろしくお願いします。

  • super( )メソッドについて質問です

    サブクラスのコンストラクタの定義をするときにsuper()メソッドを使うときはどういうときですか?また、どうしてsuper()メソッドを使って、スーパークラスのインスタンスを作成しないといけないのですか?教えてください。

    • ベストアンサー
    • Java
  • 【.NET】コンストラクタをあとで呼出す方法

    .NET初心者です。 今VB.NETでVB6向けの自作COMクラスライブラリを作成しています。 自作クラスはStreamWriterクラスのラッパークラスとしてStreamWriterと継承関係にあります。 COMは引数なしのコンストラクターを一つ用意しなければなりませんが、 StreamWriterクラスは引数なしのコンストラクタを用意されていないため困っています。 自作クラス自身もFileクラスのラッパークラスで引数として使う必要があるため 継承関係を維持してVB6に公開する必要があります。 この問題をなんとか解決する手法って存在するのでしょうか? ちなみにほかに考えた手法は下記です。 ・プロパティーに StreamWriterのインスタンスを用いて継承関係なしであとでinitメソッドを呼び出す   →Fileラッパークラスの引数でStreamWriter型に代入出来ないため不可 ・StreamWriterを引数に取るメソッドの実装をあきらめる   →極力したくない ・StreamWriterラッパークラスの引数なしコンストラクタでStreamWriterクラスの引数ありコンストラクタを呼ぶ   →後でファイルのパスを指定する方法が見つからないため不可 他言語はそれなりにやってきたのでコンストラクターをあとで呼び出すなんて出来ないのはなんとなくわかるのですが何せ.NETを触り始めたのが最近なのでよろしくお願い致します。

  • Javaのstaticメソッドの意味を教えて下さい

    Javaのstaticメソッドの意味を教えて下さい。 現在の解釈では、staticなメソッドとはインスタンスの生成に依存せず呼び出せる処理のことだと認識しています。逆にstaticでないメソッドは、生成後のインスタンスにしか使えない処理だと理解しています。 しかし、コンストラクタがstaticでないことに気がつき、疑問が生まれました。コンストラクタはstaticではないので、コンストラクタを呼び出す時にはそのクラスのインスタンスが必要になるはずです。しかしこのインスタンスを作るのにもコンストラクタが必要です。コンストラクタを使うためにインスタンスが必要で、インスタンスを作るためにコンストラクタが必要という無限ループになってしまいました。 そこで改めて、staticメソッドの意味を教えて頂きたいです。

  • SQLiteOpenHelperの実行タイミングは

    android(Java) ・「SQLiteOpenHelperクラス」を継承したユーザー定義クラスの、「コンストラクタ」や「onCreateメソッド」はどのタイミングで(どういう経路で)呼び出されるのでしょうか? >データベースの作成がまだ行われていなければ作成を行い、作成されていればそれを開きます ・どうやってそれを知るのでしょうか? ・アクテイビティにアクセスした時点で読み込まれるのかと思ったのですが、アクティビティクラスでは、importしていないみたいだし… ・アクテイビティは関係ない? ・「SQLiteOpenHelperクラス」を継承した定義クラスが、どのタイミングで、どこから呼び出されるか、教えてください ※コンストラクタに引数として渡っているContextが、何か関係しているのでしょうか?

    • ベストアンサー
    • Java
  • C++変数宣言時のコンストラクタについて

    Java開発をこれまでやってきたのですが、 C++を学ぼうとしています。 C++では下記のように宣言した場合hogeは インスタンスになり、Hogeクラスのコンストラクタが呼ばれるようなのですが、 Hoge hoge; Hogeクラスのコンストラクタが下記のような引数を持つものしか定義されていなかった場合は どの様な振る舞いをするのでしょうか? Hoge(int num); Javaでは引数の有るコンストラクタしか宣言しなかった場合はデフォルトコンストラクタは 作られなかったと思うのですが、c++では引数のないデフォルトコンストラクタができてるのでしょうか? また、デフォルトコンストラクタが出来ていなかった場合、 Hoge hoge; というようにプリミティブ型のような変数宣言の仕方で引数有りのコンストラクタを呼ぶことは出来るのでしょうか?

  • Java初心者です、エラーの意味が理解できません

    今晩は。Java初心者です、宜しくお願いします。 下のようなコードを書きましたが、 「コンストラクタ'sub(int)'は未定義です」、 「/型subのメソッド'disp(int)'は引数()に適用出来ません」というエラーが出ます。 エラーの意味が理解できません。 1.メソッドのみを持ったクラスSubに値をこのような渡し方は不可なのでしょうか。 2.Subには自動的にコンストラクタが生成されないのでしょうか。   されないとすれば、どの部分の書き方が悪いのでしょうか。 3.「型subのメソッド'disp(int)'への引数の渡し方」は、文法的にまずいということでしょうか。 それとも全てコンストラクタの生成が原因なのでしょうか。 ========================================================================= class Sub { void disp(int a) { System.out.println("a = " + a ); } } public class クラス { public static void main(String[] args) { Sub s = new Sub(10); //コンストラクタ'sub(int)'は未定義です s.disp();     //型subのメソッド'disp(int)'は引数()に適用出来ません  } }

    • ベストアンサー
    • Java
  • 継承について(長文です)

    いつもお世話になっています。現在、継承についての練習問題を解いているのですがわからないことがあるので質問させていただきます。 問題は、「自己紹介メソッド(抽象メソッド)を持つIntroduceクラスを作成し、そのクラスを継承してFistsNameクラス、FullNameクラス、IncludeAgeクラスを作成しなさい。三つのサブクラスのインスタンスを混合して配列に保持し自己紹介をしなさい」というものです。 それぞれのクラスはコマンドライン引数で名字(引数一つ)だけ、フルネーム(引数二つ)、フルネームと年齢(引数三つ)と3種類の引数を入力することによって適切なメソッドが呼び出されるということです。(わかりにくい文章ですいません。例えばヤマダと入力すればFirstNameクラスの自己紹介メソッドが呼び出されてヤマダと表示させたいのです)引数をサブクラスに渡さないと行けませんが、まずコンストラクタで引数をサブクラスに渡す場合は引数を一つ(もしくは二つ)しか指定しなかったときはフルネームとフルネーム+年齢のクラスでコンパイルエラー(ArrayIndexOutOfBoundsException)が出ます(これは理解することが出来ます)次にメソッドで渡す場合はシグネチャが異なるのでオーバーライドされずこちらもコンパイルエラーとなります。この他に引数をサブクラスに渡す方法はあるのでしょうか? わかりにくい文章になってしまいましたが、要するに三つのサブクラスをインスタンス化しその後、引数の個数により適切なサブクラスのメソッドが呼び出され引数を連結して表示させたいのです。このようなことは実現できないのでしょうか?if節によって引数の個数で場合分けなどをしないといけないのでしょうか?質問文がわかりにくければ補足させていただきます。よろしくお願いします。

    • ベストアンサー
    • Java
  • オブジェクト生成時のセオリーについて

    オブジェクト指向を採用しているプログラミング言語において、ほとんどの場合、オブジェクト生成時に使用されるコンストラクタは返り値を持てません。 また、コンストラクタにて例外を投げるといったことは推奨されていないケースが多いです。 そんな中で、コンストラクタに何らかの引数を渡してインスタンスを生成するクラスの場合、不十分な引数を渡すことで使用できない状態となるインスタンスが生成されることがあります。 こういったことを踏まえて、渡される引数が適しているものであることを確認する役割というのは使用されるクラス自身が担うのか、クラスを生成する外部の処理(ファクトリー的なクラス・メソッド)が担うのか、どちらが一般的なセオリーなんでしょうか? 無論、不十分なインスタンスが誤って使用されないようにメソッドにエラー処理をかけ、「使用できない状態のオブジェクトである」ことを通知するのは当然なのでしょう。 ただ、最近知り合いから「クラスはできるだけ不変な状態を保つよう設計した方がいい。そのほうが使いやすく、再利用時のバグが減る」という話を聞いて状態を持たないクラスの設計というのを考えこんでしまい、悩んでいます。 わかりにくい質問かもしれませんが、回答よろしくお願いします。