継承と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();
}
}
======================================================
No.1ベストアンサー
- 回答日時:
私は .NET 使いなので Java は疎いのですが、
メソッドをオーバーロードして望み通りの結果が得られないという事は、親クラスの paint メソッド内で何か必要な処理をしているという事です。それを上書きしてしまうとその処理が呼び出されなくなる為動かなくなっているのでしょう。
JFrame の paint は下記にあるように
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
java.awt.Container 由来のようなので、そちらを見てみると、super.paint(g) を呼べ、と書いてありますね。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java final 1 2022/06/10 22:49
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java eclipse実行ができない 2 2022/07/27 04:47
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Java初級 引数に適用できません
-
C# 点の描き方をおしえてくだ...
-
contextってなんですか?
-
c++のキュー
-
C# 他のnamespaceにあるメソッ...
-
オーバーロード、オーバーライ...
-
Strutsでチェックボックスの値...
-
YYYYMMDD書式の日付に対する適...
-
String.containsの反対機能はあ...
-
レコード件数の表示
-
エクセルVBAで、条件に一致する...
-
3年間同じクラスになる確率
-
インスタンス参照でアクセスで...
-
c++,ある関数のクラスから別の...
-
ワイルドカード<?>と型パラメー...
-
「天声人語」をインターネット...
-
DataGridViewでセルクリックイ...
-
string formatについて
-
クラス間でのデータ参照
-
変数の参照でエラーが出てしま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
public static void main (Stri...
-
レコード件数の表示
-
abstract と static を一緒に付...
-
なぜprotected overrideなのか
-
C# 点の描き方をおしえてくだ...
-
コマンドライン引数のチェック
-
String.containsの反対機能はあ...
-
Google Apps Script で getRang...
-
StringBufferからStringへキャ...
-
Java初心者です、エラーの意味...
-
javaに"search"という関数 or ...
-
C# でメソッドに送られてきたOb...
-
YYYYMMDD書式の日付に対する適...
-
メソッド宣言の戻り値の型にク...
-
return new使用時
-
readLine()ではじめから読み直...
-
シェルスクリプトからのJavaメ...
-
Fileの読み取り専用の解除
-
親の親のメソッドを呼ぶには?
おすすめ情報