dポイントプレゼントキャンペーン実施中!

java初心者です、宜しくお願いします。
javaのコンストラクターについて質問致します、宜しくお願いします。

アプリケーションのコンストラクターは、"public *****(){}"
となりますが、

アプレットのinitは、"public void init(){}"となるのはどのような理由から
でしょうか。

参考書等を色々検索しましたが、ヒットしませんでした、宜しくお願いします。

A 回答 (5件)

通常のクラスでは、初期化処理は new をした時のコンストラクタで行いますが、


画面に表示する部品のようなクラスでは、初期化処理のタイミングが異なります。

init の説明
https://docs.oracle.com/javase/jp/8/docs/api/jav …

説明を読むと、アプレットはブラウザとかビューアによって new されます。
恐らくその後でセキュリティー的な諸設定を行ない、
端末がスリープ状態とか画面が非表示とかでないタイミングを待ってから、
ようやくユーザーによる初期化処理を認めているのでしょう。

というわけで、コンストラクタで初期化させたくない、なにか特別な事情があるクラスの場合は、
コンストラクタとは別に init とか initialize とか configurate などのメソッドを用意することがあります。
    • good
    • 0
この回答へのお礼

Ogre7077さん、回答有難う御座います。

>init の説明
>https://docs.oracle.com/javase/jp/8/docs/api/jav …

の説明を読みましたが、
>・・・・Appletクラスで提供されるこのメソッドの実装では何も行いません。

とは、どのような意味でしょうか、よく理解できなかったのですが、
宜しくお願いします。

お礼日時:2016/04/05 16:57

>>・・・・Appletクラスで提供されるこのメソッドの実装では


>>何も行いません。
>とは、どのような意味でしょうか、

そのままです。Appletクラスのinitメソッドの中味は
空だということです。
    • good
    • 0

initはただのメソッドですね。



ライブラリが現在の状況/契機をメソッドを呼び出すことで
オブジュクトに知らせるのはよくあること。オブシェクトは
指示に従って必要な動作を行ないます。

こういうのは template method とか、framework といって
オブジェクト志向設計の典型的なパターンです。

オブジェクト内に完全に閉じた処理ならコンストラクタ
でやっても良いですが、指示されたタイミングで
指示された処理を行なうのが基本です。

出ないとライブラりが意図しない契機に処理が実行され
ライブラリ側でエラーが発生する可能性が有ります。
    • good
    • 0
この回答へのお礼

tknakamuriksaiさん、回答有難うございます。

>ライブラリが現在の状況/契機をメソッドを呼び出すことで
>オブジュクトに知らせるのはよくあること。オブシェクトは
>指示に従って必要な動作を行ないます。

#すみません、この内容の具体的な意味が理解できないのですが、
具体的には、どのような意味でしょうか??

>オブジェクト内に完全に閉じた処理ならコンストラクタ
>でやっても良いですが、指示されたタイミングで
指示され
>処理を行なうのが基本です。

#これはAppletがブラウザから呼び出されて動作することを前提と
していることを意味しているのでしょうか。

>出ないとライブラりが意図しない契機に処理が実行され
ライブ
>ラリ側でエラーが発生する可能性が有ります。

#それともJVM自身がOSとの連携を保持しながら(制御されながら)
動作しているという意味でしょうか。

すみません、折角貴重な回答を頂いたのですが、内容が理解できず
申し訳ありません。

以上、宜しくお願いします。

お礼日時:2016/04/06 10:57

最初にJavaアプレットを開発した人がそのような仕様にしたからです。

    • good
    • 0
この回答へのお礼

closed16さん、回答ありがとうございます。
アプレットがwebから呼び出されることと何か関係があるのでしょうか。

お礼日時:2016/04/04 15:18


どういう意味ですか?

initはAppletクラスのメソッドです。(コンストラクターではありません)
メソッドは「アクセス修飾子+戻り値の型+関数名(引数)」で表されるので、public void init()の表記で特に疑問に思うことはないと思いますが。
    • good
    • 0
この回答へのお礼

Hypnomaticさん、回答ありがとうございます。

それでは、何故Appletにはコンストラクターは無い(書かない)のでしょうか??
参考書では、init()内に初期設定を書くとありましたが。
宜しくお願いします。

お礼日時:2016/04/04 08:18

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