• 締切済み

java extends new

(javaにて)extends してクラスの継承を行った場合と、newして新しく作り出した場合と何が違うのでしょうか? ソースコード的にはextends したほうが文字数が少なくて済みますが、他の違いを思いつきません。

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

みんなの回答

回答No.2

t_ohtaさんの説明で充分なのですが、例えて言うとクラスは設計図、インスタンスは実態です。 例えば自動車の設計図がクラスに対応し、自動車の実物がインスタンスに対応します。 つまりextendsとは設計図(クラス)の拡張と言う意味です。

muuming2001
質問者

補足

すいません。書き方があやふやで異とが伝わらなかったようなので、一旦閉めて書き直します。

  • t_ohta
  • ベストアンサー率38% (5080/13276)
回答No.1

extends してクラスの継承をした場合、元のクラスの機能を引き継いだ新しいクラスを定義するだけです。 new は定義されたクラスのインスタンスを作って、実際に動作させる行為なので全く別モノです。

muuming2001
質問者

補足

すいません。書き方があやふやで。 一旦閉めて書き直します。

関連するQ&A

  • 継承(extends)について

    extendsについてわからないことがあります。 次の3つのクラスがあった時、 class スーパークラス { ... class サブクラス1 extends スーパークラス { ... class サブクラス2 extends サブクラス1 {... サブクラス2は、サブクラス1でスーパークラスから継承しているフィールドをメソッドを継承するのでしょうか?

    • ベストアンサー
    • Java
  • extendsの使い方

    public class ThreadSample3 { public static void main(String[] args) { ThreadA ta = new ThreadA(); ThreadB tb = new ThreadB(); ta.start(); tb.start(); } } class ThreadA extends Thread { public void run() { try { for(int i = 0; i < 10; i++) { Thread.sleep(1000); System.out.println("ThreadA"); } } catch (InterruptedException e) { } } } class ThreadB extends Thread { public void run() { try { for(int i = 0; i < 10; i++) { Thread.sleep(2000); System.out.println("ThreadB"); } } catch (InterruptedException e) { } } } これは、ThreadAとThreadBを10回ずつ表示させるプログラムなのですが、extendsは子供と親の関係に当たり、例えば親クラスボールだったら子クラスが野球ボールやゴルフボールになると習いました。 class ThreadA extends Thread{ の部分はThreadとThreadAが親子関係になっていますか? またどうして子クラスの名前と親クラスの名前はこう書かないといけないですか。 

    • ベストアンサー
    • Java
  • Javaのプログラムについて教えてください!

    //Sub.java package prac; class Super{ public void A(){ String address = new String("Osaka"); System.out.println(address); } } public class Sub extends Super{ public void A(){ String address = new String("Kyoto"); System.out.println(address); } public int A(String tmp){ return Integer.parseInt(tmp); } } このプログラムを他のクラスのmain関数から呼び出す場合どのようなコードになりますか?また、間違えているところがあれば合わせて教えてください。

    • ベストアンサー
    • 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のString[]をnewした時の値について。

    JavaのString[]をnewした時の値について。 どなたか、分かる方がいらっしゃいましたらご教授下さい。 JavaでString[]をnewしたとき、String[]の値には「null」が入りますか? それとも、「""」 空要素が入りますか? また、Stringの「""」と「null」の違いはなんですか?

    • ベストアンサー
    • Java
  • javaのクラスに関する初歩的な質問

    今日は javaの初心者ですが、javaのプログラムのクラスについて、お教えください。 後記の、javaのクラスのコードについてお聞きします。 1)サブルーチンvoid aaa()は、問題なくコンパイルできまして、変数aにアクセスできます。 2)クラスpublic class xxx extends test{}の中で、変数aにアクセスできません。 Q1)項2に記しました、クラスpublic class xxx extends test{}の中で、変数a   にアクセスする方法はあります?。 Q2) クラスxxxxをnewで使用する方法はありますか?    注) this.xxxx=new xxx(); <---コンパイルエラーになる 初歩的な質問ですが、ご回答頂けますと大変たすかります。 //===================== package pkg; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class test extends JFrame { private JPanel contentPane; public int a=9; //Launch the application. public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { test frame = new test(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } //Create the frame. public test() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); aaa(); // this.xxxx=new xxx(); <---コンパイルエラーになる } public class xxx extends test{ // a=2; //コンパイルエラーになる。 } void aaa(){ System.out.println("a="+a); } }

    • ベストアンサー
    • Java
  • virtual時のoverrideとnewの違い

    C#で、 virtualがない時はnewしか使えませんが、 virtualがある時はoverrideとnewが使えますが、 overrideとnewを使った時の違いがよく分かりません。 例えば、基本クラスに public virtual void show(){  Console.WriteLine("基本クラス"); } というメソッドがあるとして、 派生クラスで、 public override void show(){  Console.WriteLine("派生クラス"); } とすると、 基本クラスのメソッドが上書きされて、 Console.WriteLine("派生クラス"); が実行されますが、 派生クラスで、 public new void show(){  Console.WriteLine("派生クラス"); } とした場合にも、 基本クラスのメソッドが隠匿されて、 Console.WriteLine("派生クラス"); だけが実行されます。 virtual使用時において、 継承メソッドの隠匿(new)と、 継承メソッドの上書き(override)では、 一見、なにも違いがないように見えるのですが、 何か違うのでしょうか。

  • java

    質問なのですが、java で下記のようなソースコードを書いた際に SuppressWarnings uncheckedと警告が出るのですが、 この場合の解決策をどなたか教えてください。 よろしくお願いします。 List<shopbean> shopList = null; Collections.sort(shopList,new BeanComparator("id"));

  • importとextendsの用い方の違いは?

    importとextendsというのはどちらも他のクラスを参照するという意味で同じように感じられます。 extendsだとメソッドのオーバライドが出来る、 importだと異なったパッケージからでも参照出来る、ということ以外に何か使うにあたって区別すべきポイントはあるのでしょうか?

    • ベストアンサー
    • Java
  • Javaの自作例外クラスについて

    Javaの自作例外クラスについて質問です。 Javaでは例外クラスを自作することが可能ですが、 その際に親クラスとして、ExceptionかRuntimeExceptionを継承する必要があります。 ここで、この二つのクラスのうちどちらを継承させた方が良いのでしょうか? それぞれのメリット・デメリットまたは用途などをご教授願いますでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう