継承とsuperの意味が理解できません。
継承とsuperの意味が理解できません。
今日は、JAVA初心者です、宜しくお願いします。
1番目のアプレットで「Applet」を継承させると、正常にWINDOWが表示されます。
しかし、2番目のアプリケ-ションを動かすと、「JFrame」を継承して、「PAINT」
を上書きしているのに、WINDOWは表示されますが、
透明になって、下側の画面が映り、Todayという文字は正常に表示されません。
paintメソッド内に、「super.paint(g);」を書いてやると、正常に動作します。
(3番目のプログラム)
テキスト通に、「JFrame」を継承して、「PAINT」を上書きしているのに、「PAINT」
メソッド内で、更に「super.paint(g);」を呼び出す必要性、理由がわかりません。
継承の意味が無いと思うのですが、他に原因があるのでしょうか。
継承している子クラスは、無条件で親クラスのメソッドを上書き出来ると思うのですが、
一体どのような時にSUPERが必要になるのでしょうか。
宜しくお願いします。
1番目のプログラムをと2番目のプログラムはアプレット、アプリケーションとの違い
はあるとしても、 基本的な考え方は違わないと考えてるのですが。
======================================================
public class Sample1 extends Applet
{
public void paint(Graphics g)
{
g.drawString("java",10,10);
}
}
======================================================
public class JFrameTest extends JFrame
{
JFrameTest()
{
setSize(400,300);
setTitle("JFrameTest");
}
public void paint(Graphics g)
{
g.drawString("Today",100,100);
}
public static void main(String[] args)
{
JFrame jf = new JFrameTest();
jf.show();
}
}
======================================================
public class JFrameTest extends JFrame
{
JFrameTest()
{
setSize(400,300);
setTitle("JFrameTest");
}
public void paint(Graphics g)
{
super.paint(g);
g.drawString("Today",100,100);
}
public static void main(String[] args)
{
JFrame jf = new JFrameTest();
jf.show();
}
}
======================================================
補足
駄目でした。 確か、そういう書き方は「ActionScript2では出来たけど、ActionScript3では出来なくなった」と、どこかで読んだような覚えがあります。