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で質問しましょう!
似たような質問が見つかりました
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 15:14
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数の変数を宣言する時、同時...
-
変数名の付け方
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
VB.NET getとsetの概念がわかり...
-
フォームの存在をチェックする方法
-
C# インスタンスの破棄
-
「共有メンバにアクセスするイ...
-
メソッドの引数としてのthisの意味
-
オブジェクト参照がオブジェク...
-
「インスタンス」の意味をわか...
-
インスタンスを同じ名前で作成...
-
生成したインスタンスを削除す...
-
整数の引数に列挙を使ったとき
-
マルチスレッド間でデータ交換...
-
String a = "a"; と String b =...
-
javaのクラスの作り方、エラー...
-
VB6.0のクラスで、自分自身のイ...
-
VB.netで標準モジュールからフ...
-
非staticフィールドを参照でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
SQLを連続発行する時の正しい(?...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
エクセル(複数インスタンス)...
-
フォームの存在をチェックする方法
-
VB6.0で、DLLを動的に参照したい
-
String a = "a"; と String b =...
-
C#「オブジェクト参照が必要で...
-
newしないインスタンス?実体化...
-
「インスタンス」の意味をわか...
-
SetWindowsHookExで質問
-
フィールドでのnewとコンストラ...
おすすめ情報