新しいJFrameを作成するのではなく、JFrameを拡張することの長所と短所は何ですか?
例えば:
public class Test extends JFrame {
setVisible(true);
}
また
public class Test {
JFrame test = new JFrame():
test.setVisible(true);
}
新しいJFrameを作成するのではなく、JFrameを拡張することの長所と短所は何ですか?
例えば:
public class Test extends JFrame {
setVisible(true);
}
また
public class Test {
JFrame test = new JFrame():
test.setVisible(true);
}
クラスの機能を実際に拡張したい場合を除いて、クラスを拡張しないでください。ここで示した例では、オプション1は機能の乱用であるため、オプション2を使用する必要がありますextend
。
言い換えれば、質問への答えがテストである限りJFrame
?NOです。拡張しないでくださいJFrame
。
JFrame(またはそのことについてはSwingコンポーネント)を拡張しないことの長所:
int getX()
とint getY()
メソッドを与えたときです。試してみると、それほど面白くない異常な動作が見られます。JFrame を拡張する場合は、現在の Jframe クラスを変更/カスタマイズして、サブクラスがこのカスタマイズされた実装を使用できるようにします。
JFrame クラスで何も変更したくない場合は、コードで指定した 2 番目のスニペットのように既存のものを使用してください。使用とは、JPanel で他の JComponent (例のボタン/ラベル) などを作成し、オブジェクト Test を作成し、JFrame contentPane をこのオブジェクトに設定することを意味します。何かのようなもの
public class Test extends JPanel {
public class() {
// add buttons/label here
}
...
private static void createAndShowGUI() {
JFrame frame = new JFrame();
Test object = new Test();
frame.setContentPane(object.setOpaque(true));
frame.setVisible(true);
}
...
}
OOD のルールの 1 つ: クラスを継承 (拡張) できない場合は、クラスを継承しません。
継承により、プログラムの複雑さと接続性が増し、新しいエラーが発生する可能性があります。あなたの場合、クラスを延長する理由はありません。
保護されたメンバーにアクセスする必要がある場合、および/またはポリモーフィックな動作を取得する必要がある場合 (仮想メソッドをオーバーライドする場合) にのみ、クラスを拡張する必要があります。