• ベストアンサー

携帯IApplicationのsuper

JAVAやクラスをほとんど知らないのですが class MyCanvas extends Canvas {  IApplication app;  MyCanvas(IApplication a){   super(); このsuper()は、親であるCanvasクラスのコンストラクタを実行するんですよね? 例えばどういうことをされるのですか?

  • Java
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>例えばどういうことをされるのですか? キャンバスオブジェクトを生成します。 com.nttdocomo.ui クラス Canvas http://www.rcdtokyo.com/man/doja/api/com/nttdocomo/ui/Canvas.html 具体的には、キャンバス型の画面が生成されます。ただ、そこにオーバーライドされたpaintメソッドなどを使って描画などをしなければ、単に生成された画面だけの、非常にシンプルなものとなってしまいますが・・・。

参考URL:
http://www.fk.urban.ne.jp/home/kishida/kouza/kishou/javai.html

関連するQ&A

  • スーパークラスのコンストラクタの呼び出し

    こんにちは。 スーパークラスに引数のあるコンストラクタと引数のないコンストラクタをサブクラスで継承する際の質問です。 具体的に書くと下記になります。 class A { A () {} A (int i) {} } class B extends A { } 何がわからないかというと 『スーパークラスのA()は、サブクラスのBでわざわざ明示的にスーパークラスのコンストラクタ呼び出しをしなくても問題ないというのはわかるのですが、なぜスーパークラスのA(int)は、呼び出さなくても良いのかということです。』 もしかしたら基礎中の基礎かもしれませんが、ご教授よろしくお願いいたします。

    • ベストアンサー
    • Java
  •  superについて教えて下さい

     superについて教えて下さい  JAVAの初心者です、宜しくお願いします。  「super」についてよくわかりません。 ある本には、「親クラスのコンストラクタを呼び出す」、またある本には、「親クラスのオブジェクトを呼 び出す」、と書かれていました。  ・コンストラクタとオブジェクトとは同じ意味なのでしょうか。  ・また、ある本には、「コンストラクタの継承はされない」とかかれていますが、どのように違うのでしょうか。  ・JAVAのApIには、次のように書かれています。   「paint     public void paint(Graphics g)コンテナをペイントします。このコンテナの子コンポーネントで    あるすべての軽量コンポーネントへペイント要求を転送します。このメソッドが再実装される場合、軽量    コンポーネントが正しく描画されるように super.paint(g) を呼び出さなければなりません。    (以下略)」   super.paint(g)と各意味は、親クラスのメソッドを呼びだすことで、親クラスのメソッドを呼びだす時に  も、superが必要ということでしょうか。  コンストラクタ自体についてよく理解出来ていないのですが  ・そもそもクラス(オブジェクトの生成)にとってどのような役割、意味があるのでしょうか。   オブジェクトの生成すると、デフォルトで自動的に引数なしのコンストラクタが作成されると書かれています  が、  ・作成されること自体にどのような意味があるのでしょうか。  変数の初期化とかをコンストラクタ内で設定するのは意味があるとは思うのですが、、、、

    • ベストアンサー
    • Java
  • iアプリ 色変更

    初歩的質問ですが・・・ import com.nttdocomo.ui.*; public class TEST01 extends IApplication { public void start(){ MyCanvas mc = new MyCanvas(); Display.setCurrent(mc); } } class MyCanvas extends Canvas{ public void paint(Graphics g){ g.setColor(g.getColorOfName(g.AQUA)); g.fillRect(0,0,200,200); } } で、g.setColor(g.getColorOfName(g.AQUA))の部分で、 「 Graphics からの static メソッド getColorOfName(int) には静的にアクセスしてください。」 と、エラーがでます。 ですが、実行はできます。なぜ??

    • ベストアンサー
    • Java
  • java アプリケーションをjava アプレットに

    java超初学者です。詳しいかたご教授願います。 java アプリケーションをjava アプレットに書き換えたいのですが、具体的にはどう書き換えを行ったらいいのか修正をお願いします。 (文字制限があるので、14個あるクラスファイルの中で(内1つはhtmlファイル)、メインメソッドを持つ実行クラスだけのせています。) Appletを継承させる、属性をメインクラスとコンストラクタはpublic にする、 mainメソッドを削除し、initメソッドへ書き換える、サイズ指定は<applet>タグで指定する。等調べましたが 具体的にわかりません。特にコンストラクタとメインメソッドの部分のアプレットへの書き換えがわかりませんでした。 宜しくお願い致します。 //実行クラスです。 import java.awt.*; import java.awt.event.*; /** *ゲームクラス(ここから始まる)<p> *画面の作成 */ public class Game extends Frame { /** * メインクラス */ public static void main(String args[]) { //フレームの作成 new Game(); } /** * 引数なしのコンストラクタ */ Game() { //*** ウィンドウの初期化 //タイトル super("Shooting Game"); //クローズボタンによる終了処理の実装 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); setSize(500, 500); //ウィンドウのサイズ //*** キャンバスの初期化 MyCanvas mc = new MyCanvas(); add(mc); //フレームにキャンバスを追加 setVisible(true); //ウィンドウの表示 //ゲームデータの初期化 mc.init(); //スレッドを作成 mc.initThread(); } }

  • コンストラクタの使い方?

    僕はまだJavaを勉強し始めて1ヶ月ぐらいの初心者なんですけども、現段階では基本的な文法を勉強し終えた(かなと思っている)ので、Swingのほうに早速とりかかりました。その際にすごく疑問に思ったことがあるので、皆さんにお尋ねします。 public class A ......main..... class B extends Frame{   public B(String stitle){    super(stitle);  } } super(stitle)のところでFrameクラスのコンストラクタが呼び出されていますよね。そこでFrameクラスのコンストラクタの定義を見てみると、僕が今まで学んできたような定義がなされていないんですけども。僕が今まで学んできたものというのは、 class Car {   private int num;   private double gas;   public Car()   {    System.out.println(車を作成しました。)   } } class C { ....main...   {    Car car1=new Car();   } } この場合の実行結果というのは、 「車を作成しました。」という文章が表示されはづですけど、これって言うのはSystem.out.println(車を作成しました。)のようにきちんと定義しているからですよね。それに対してFrameクラスのコンストラクタの定義には説明はあるものの、実行処理するための定義がされていないような気がするんですけども・・・。まだ僕はオブジェクト指向というものを理解できていないから、このようなわけのわからない質問をしている(と思う)のですが、よろしければどなたか分かりやすく教えてください。

    • ベストアンサー
    • Java
  • java コンパイルエラー

    java コンパイルエラー java 初心者です。 簡単なプログラムを作りながら練習していたのですが、Exceptionクラスを継承して新しい例外を作る以下のプログラムで、コンパイルエラーとなり、解決できません。 class NewException extends Exception{ public NewException(){ super("エラー"); } } これを javac でコンパイルすると、 NewException.java:3: シンボルを見つけられません。 シンボル: コンストラクタ Exception(java.lang.String) 場所  : Exception の クラス super("エラー"); ^ エラー1個 と言われます。 これを読むと「Exception には String を引数にとるコンストラクタはないよ」と言われているように思えるのですが、そんなはずないのでは。。 もし原因がお分かりの方がいらしたら、ご教示いただけるとありがたいです。

    • ベストアンサー
    • Java
  • Javaのマウスイベントについて

    閲覧ありがとうございます、Java初心者です。 現在Javaの勉強をしており、マウスの座標を取得しその座標に座標を描画 するプログラムを作っているのですが、どうしても上手くいきません・・・以下が ソースです↓ import java.awt.*; import java.awt.event.*; public class test01 extends Frame { int x, y; public static void main(String[] args) { new test01(); } test01() { super("FrameTest"); //フレーム名 setSize(300, 300); //サイズを設定 MyCanvas mc = new MyCanvas(); //グラフィック用メソッドをインスタンス化 add(mc); //フレームに描画 addMouseMotionListener(new getMouse_position()); System.out.println("(" + x + "," + y + ")"); setVisible(true); //フレームを表示 addWindowListener(new Close()); //クローズ処理 } /*** グラフィック描画用クラス ***/ public class MyCanvas extends Canvas { public void paint(Graphics g) { g.drawString("(" + x+ "," + y + ")", x, y); } } /*** マウス操作用クラス ***/ public class getMouse_position extends MouseAdapter { public void mouseMoved(MouseEvent ev) { x = getX(); //マウスのx座標を取得 y = getY(); //マウスのy座標を取得 repaint(); } } } /*** クローズ用クラス ***/ class Close extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } これを実行すると、ずっと(0, 0)のままでマウスの座標を読み取ってくれません・・・何故なんで でしょうか?

    • ベストアンサー
    • Java
  • Javaコンストラクタthisとsuperについて

    javaのthisとsuperの理解の為に下記のようなクラスで実験してみているのですが、 少し解らない箇所が出てきました。 コメントアウト行(1)に書いたようにsuper()を書くとエラーが発生してしまいます。 確かsuper()はコンパイラが自動的にコンストラクタが実行された時1行目に挿入している。 と覚えていたので明示的にしようとしたのですが、どうやら認識違いのようでして、だとしたら Q1:super()はいつ呼ばれているのでしょうか? また、ConstThisTestは暗黙的にObjectクラスを継承しているはずなので Q2:Objectクラスのコンストラクタが呼ばれているはずですが、 いつ呼ばれているかをログなどで確認する方法はありますでしょうか? 因みに開発環境はeclipseを使用しております。 尚javaのバージョンやeclipseのバージョン等は 今回は関係ないかなと思うので記載しておりません。 以上 何卒宜しくお願い致します。 --------------------------------------------------------- public class ConstThisTest { int constValue = 0 ; public ConstThisTest(int constValue) { this.constValue = constValue; } public ConstThisTest() {        /* (1)super()を書くとthis()は1行目にかかないと          コンストラクタ内の最初のステートメントであることが必要とエラーが出る。 */ this(-1); } public void printValue(){ System.out.println("constValue = " + constValue); } } public class ConstThisTestMain { public static void main(String[] args) { ConstThisTest ct = new ConstThisTest(); ct.printValue(); } }

    • ベストアンサー
    • Java
  • 親の親のメソッドを呼ぶには?

    最近VC++をはじめていじって、 思った疑問です。 class A class B extends A class C extends C 各クラスはメソッドaaa()を持ってたとします。 Aのaaa()はsysout("A.aaa") Bのaaa()はsysout("B.aaa") (sysout = System.out.println) ってなっている場合 CのaaaでAのような振る舞いを見せることは可能なんでしょうか。 C++だと親子関係をすっとばして親の親(おじいちゃん?)のメソッドを呼べるようです。 javaだとsuper.aaa()みたいな書き方しかできないと おもうのですが、 親の親のメソッドを呼ぶってできるのでしょうか?

    • ベストアンサー
    • Java
  • オーバーライドの必要性

    まだまだJavaを勉強している途中なのですが、下記のサンプルコードでオーバーライド(メソッドをオーバーロードすることをオーバーライドというのでしょうか…!?)のの必要性がよく分からなくなってしまったので質問させて頂きました。 /* sample.java */ abstract class super_class{  void write(){} } class CLASS1 extends super_class{  void write(){ System.out.println("CLASS1"); } } class CLASS2 extends super_class{  void write(){ System.out.println("CLASS2"); } } class sample{  public static void main(String args[]){   super_class obj = new CLASS2();   obj.write();   obj = new CLASS1();   obj.write();  } } 以上のコードを実行した場合 CLASS2 CLASS1 と表示されるのは多少なりとも勉強して分かったつもりでした…。 しかし、あくまでサンプルであるために特に意味がないことでもオーバーライドの説明をしているのだろうという風に考えてしまったのですが、 結局は、 スーパークラスとサブクラスに同じシグネチャのメソッドがあった場合、各サブクラスのメソッドが実行される と言うことは、スーパークラスのwrite()メソッドは何をしているのでしょうか? 多様性はJavaでも大切なものであるとのことなので質問させて頂きました。 なるべくわかりやすく説明して頂きたいと思います。 どうかお答えをお願いします。

    • ベストアンサー
    • Java