プロが教えるわが家の防犯対策術!

Javaを勉強し始めました。クラスには、フィールドとメソッドとコンストラクタがある。とのことですが、それならなぜクラスには3つがあるよ、という説明から入らないのでしょうか?

コンストラクタが後の方から出てきて、今までコンストラクタはなかったし、いらないんじゃ?と思いました。
役割も?です。

フィールドは変数を作ったこと?


メソッドはオブジェクトのを動かす、操作するやつ、ってことでわかるのですが。


で、フィールドとメソッドはなくていいけど、コンストラクタは絶対必要、の意味もわかりません!教えてください。

Java

A 回答 (4件)

AN03 補足。



コンストラクタの「役割」はインスタンスを使い始める「前」に
インスタンスを初期化すること。

例えば、addメソッドで文字列をリストとして蓄えるような機能が
あるとすると、恐らくクラスには List<String>型のフィールドが必要で、
使ぃ始める前にArrayListのインスタンスを作っていれておく必要が
あるでしょう。

こういう処理がなくて、使う側がやれということなら、そのクラスは
酷く使いにくいでしょう。

init()という普通のメソッドを作っておいて、インスタンスを使い始める
前に呼び出して貰ってもよいのですが、はっきり言ってダサイです。

インタンスを使い始める前に、インタンスを使うためお膳立てを
「自動的」に整えてくれるのが コンストラクタです。
    • good
    • 0

>フィールドとメソッドはなくていいけど、コンストラクタは絶対必要、


逆ですよね。

コンストラクタ無しで、初期化は全くせずにフィールドの既定の初期化に
任せることも、初期化メソッドの明示的呼び出しで
すますことも可能。

Javaは既定コンストラクタがあるから、コンストラクタのない
クラスを作れないだけ。コンストラクタの記述は必須ではない。

フィールドもメソッドもないクラスは、文法上は作れるけど
特殊な用途しかないので初心者が考えても
しかたがない。
    • good
    • 0

コンストラクタはオブジェクトの初期化のために必要です。


変数の初期値がシステムが決める既定値(nullとか0とか)でよいならコンストラクタは確かに意味がありませんが、特定の値を持つのであれば明示的な初期化が必要で、それを行うのがコンストラクタです。

また、コンストラクタには引数を持つことが出来ますから、例えば犬というクラスを設け、そのインスタンスを作成する際にそれが「ポチ」のインスタンスなのか「タロー」のインスタンスなそかを引数で指定するといったことが出来ます。

Javaの解説書、入門書にはそういった意味の記載があるはずなのですが。。。
参考まで。
    • good
    • 0

>>クラスには、フィールドとメソッドとコンストラクタがある。

とのことですが、それならなぜクラスには3つがあるよ、という説明から入らないのでしょうか?

このオモチャの戦車は、車体と砲塔と弾薬コンテナで構成されているとのことですが、なぜ、この戦車には3つがあるよという説明から入らないのでしょうか?

という疑問と同じかな?

一度に全部説明すると、初心者には分からなくなるから、さしあたり知らなくても困らないことは後回しにしたとくことでしょう。よくあると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!