
Javaを勉強し始めました。クラスには、フィールドとメソッドとコンストラクタがある。とのことですが、それならなぜクラスには3つがあるよ、という説明から入らないのでしょうか?
コンストラクタが後の方から出てきて、今までコンストラクタはなかったし、いらないんじゃ?と思いました。
役割も?です。
フィールドは変数を作ったこと?
メソッドはオブジェクトのを動かす、操作するやつ、ってことでわかるのですが。
で、フィールドとメソッドはなくていいけど、コンストラクタは絶対必要、の意味もわかりません!教えてください。
Java
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
AN03 補足。
コンストラクタの「役割」はインスタンスを使い始める「前」に
インスタンスを初期化すること。
例えば、addメソッドで文字列をリストとして蓄えるような機能が
あるとすると、恐らくクラスには List<String>型のフィールドが必要で、
使ぃ始める前にArrayListのインスタンスを作っていれておく必要が
あるでしょう。
こういう処理がなくて、使う側がやれということなら、そのクラスは
酷く使いにくいでしょう。
init()という普通のメソッドを作っておいて、インスタンスを使い始める
前に呼び出して貰ってもよいのですが、はっきり言ってダサイです。
インタンスを使い始める前に、インタンスを使うためお膳立てを
「自動的」に整えてくれるのが コンストラクタです。
No.3
- 回答日時:
>フィールドとメソッドはなくていいけど、コンストラクタは絶対必要、
逆ですよね。
コンストラクタ無しで、初期化は全くせずにフィールドの既定の初期化に
任せることも、初期化メソッドの明示的呼び出しで
すますことも可能。
Javaは既定コンストラクタがあるから、コンストラクタのない
クラスを作れないだけ。コンストラクタの記述は必須ではない。
フィールドもメソッドもないクラスは、文法上は作れるけど
特殊な用途しかないので初心者が考えても
しかたがない。
No.2
- 回答日時:
コンストラクタはオブジェクトの初期化のために必要です。
変数の初期値がシステムが決める既定値(nullとか0とか)でよいならコンストラクタは確かに意味がありませんが、特定の値を持つのであれば明示的な初期化が必要で、それを行うのがコンストラクタです。
また、コンストラクタには引数を持つことが出来ますから、例えば犬というクラスを設け、そのインスタンスを作成する際にそれが「ポチ」のインスタンスなのか「タロー」のインスタンスなそかを引数で指定するといったことが出来ます。
Javaの解説書、入門書にはそういった意味の記載があるはずなのですが。。。
参考まで。
No.1
- 回答日時:
>>クラスには、フィールドとメソッドとコンストラクタがある。
とのことですが、それならなぜクラスには3つがあるよ、という説明から入らないのでしょうか?このオモチャの戦車は、車体と砲塔と弾薬コンテナで構成されているとのことですが、なぜ、この戦車には3つがあるよという説明から入らないのでしょうか?
という疑問と同じかな?
一度に全部説明すると、初心者には分からなくなるから、さしあたり知らなくても困らないことは後回しにしたとくことでしょう。よくあると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
javaのクラスの作り方、エラー...
-
変数の参照でエラーが出てしま...
-
Delphiでインスタンスが作成さ...
-
オブジェクト参照がオブジェク...
-
VB6.0で、DLLを動的に参照したい
-
private static という変数の修飾
-
「インスタンス」の意味をわか...
-
SetWindowsHookExで質問
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
C#の構造体の開放のしかた
-
Eclipse3でVisualEditorが起動...
-
VB6.0のクラスで、自分自身のイ...
-
VB.NET)ボックスからラベルにデ...
-
フォームのCheck boxとOLEObjec...
-
インスタンス参照でアクセスで...
-
インスタンスを同じ名前で作成...
-
interface,extend,implementの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
生成したインスタンスを削除す...
-
オブジェクト参照がオブジェク...
-
C#において、同じインスタンス...
-
C# インスタンスの破棄
-
変数の参照でエラーが出てしま...
-
インスタンスを同じ名前で作成...
-
VB.NET getとsetの概念がわかり...
-
newしないインスタンス?実体化...
-
javaのクラスの作り方、エラー...
-
非staticフィールドを参照でき...
-
「インスタンス」の意味をわか...
-
[Visual C#] 優先される処理に...
-
フォームの存在をチェックする方法
-
大量のデータとインスタンスの...
-
C#「オブジェクト参照が必要で...
-
String a = "a"; と String b =...
おすすめ情報