重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

 
 今晩は。
 参考書を見ながら、リスナーを別クラスで書いてみました。

 maクラスのコンストラクタを「public void ma」にすると「maのコンストラクタが未定義」
ですというエラーが出ます。

 これはどのような意味でしょうか、よろしくお願いします。


=================================================================================

public class applet extends Applet
{
String s = "Hello" ;

public void init()
{
addMouseListener(new ma(this));
}

public void paint(Graphics g)
{
g.drawString( s , 60 , 60 ) ;
}
}



class ma extends MouseAdapter
{
applet a ;

public /*void*/ ma(applet ap)
{
a = ap ;
}

public void mouseClicked(MouseEvent e)
{
a.s = "JAVA" ;
a.repaint() ;
}
}

A 回答 (4件)

># これはもう少し具体的に説明して頂くとどのような意味になるのでしょうか。



これこそ、1さんのいうとおり仕様書を読んで理解してください。

簡単に言うと、すべてのクラスはObjectクラスを親に持ちます。
そのObjectクラスから継承され、許可されたすべての実装を初期で持ちます。
つまり、appletを引数にもつコンストラクタが継承されたすべての
クラスの中に存在しないということです。
    • good
    • 0
この回答へのお礼

covachanさん、有難うございました。
 
 もう少し勉強します。

お礼日時:2012/10/27 16:07

ma 側のソースで別のコンパイルエラーとかが出ているとか


ないですか?

ma の引数付きコンストラクタはちゃんと有るのに未定義エラーになっているのは
変だし、ma の引数付きコンストラクタは親のデフォルトコンストラクタ
を呼び出しているので、java のソースとしては問題は無いように思えます。
    • good
    • 0

コンストラクタは


public ma

メソッドは
public void ma

で、new ma(this))の個所で
引数にappletを与えるコンストラクタを呼んでいますが、
継承元のコンストラクタにappletを引数にするものがないということです。
    • good
    • 0
この回答へのお礼

 回答有難うございます。

 コンストラクタとメソッドを正確に理解出来ていませんでした。

>引数にappletを与えるコンストラクタを呼んでいますが、
 継承元のコンストラクタにappletを引数にするものがないということです。

# これはもう少し具体的に説明して頂くとどのような意味になるのでしょうか。

 宜しくお願いします。 

お礼日時:2012/10/25 23:46

困ったら仕様を見る.



参考URL:http://docs.oracle.com/javase/specs/jls/se7/html …
    • good
    • 0

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