ここから本文です

コンストラクタの目的について コンストラクタはクラスのオブジェクオを作成し...

せーぶるさん

2013/5/2010:28:44

コンストラクタの目的について

コンストラクタはクラスのオブジェクオを作成して初期化するメソッドだと習いました。
しかし、コンストラクタを明示的に宣言せず、デフォルトのままにするときもあります。

このコンストラクタですが
一体、どのようなときに、明確に宣言するのでしょうか。

コンストラクタを宣言する場合、それはどのような場合に、何を目的として、どうのような効力を産むのか

教えてください。

コンストラクタをいまいち理解せずに「例外」「継承」へ進んだら
何が何だかさっぱりわからなくなってしまいました、、、
よろしくお願いいたします。

補足k032yfさん

一応プログラムは書いております。
ところが、発展したものへトライしようとするとき、非常に苦労します。

それは、一番最初の一番基礎となる部分への理解が曖昧だからだと、解釈いたしました。
知識としては知っていても論理的な理解が欠けているため応用できずつまづきます。
それはそういうものだからとりあえず先へ進め言われます。
ですが先へ進んだ結果、今のような現状です。
そこで質問させていただいております。

閲覧数:
436
回答数:
5
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

IROHACODEさん

2013/5/2013:16:54

>コンストラクタを明示的に宣言せず、デフォルトのままにするときもあります。
>どのようなときに、明確に宣言するのでしょうか。
“デフォルトのままにしないとき”

引数に与えられたものによって、そのクラスが持つメソッドの振る舞いを変えたい時。
予め、プロパティに何らかの処理を施しておきたい時。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

kon********さん

編集あり2013/5/2107:41:29

文法的にコンストラクタが許可されていないと
クラス値(インスタンス)に共通に最初に呼び
出すことが必要なメソッドがある場合
(それは多くの場合初期化メソッドです)
それを呼び出すのを忘れがちになります。
プログラムのいわゆるバグの原因のかなりの
割合がこの初期化忘れによるものだといわれて
います。
コンストラクタが許可されているので、
コンストラクタにそのクラスインスタンス使用
時に必要な共通初期処理を記述すると
うっかりミスによる初期処理忘れを防止する
ことができるでしょう。これはnew文の使用
がインスタンス使用では必須でありそれ以外
に用意されていないこととコンストラクタの
明示的指定がnew文使用の前提になっている
ことによるものです。
ただしコンストラクタは、メソッドの中から
呼び出すことができないなど制限もあります。
乱用(不適切な使用を含む)はプログラムを難
しくさせる原因になりかねないのでそれほど
不便でもありません。

ただ上記制限がある以上、薬効成分もあり
ますが副作用もあるのでしょう。正しい使い方は
平易とはいえないと思います。
ある程度慣熟してから使うようにしたほうが
良いものかも知れません。

mei********さん

2013/5/2018:19:29

コンストラクタは、インスタンスを作成して初期化をします。
しかし、実行するまで値が定まらず初期化することに意味の無い場合があります。
このようなときには、デフォルトのコンストラクタがのままとします。
インスタンスの使用時に値の設定などで必要が生じ、又その値が明確になった時に、改めて値を設定します。

xia********さん

2013/5/2012:13:47

インスタンスメソッドはインスタンス変数にアクセス出来ます。
したがってインスタンスを操作する目的に適しています。
例えば住所録のクラスがあって、登録内容を操作する場合
当然インスタンスごとに違う人の情報ですからインスタンス変数に
アクセス出来ないと作業が出来ません。
一方クラスメソッドはインスタンスとの関わりがありません。
インスタンスを作らなくても実行出来るため、単純な計算等
引数のみから答えが出せる処理や、インスタンスを生成する処理等に
多く利用されます。

k03********さん

2013/5/2010:39:16

severbabylonさん

できる範囲でプログラムを書く。

必要から理解が進む。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる