プロが教える店舗&オフィスのセキュリティ対策術

今日は
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);
}
}

A 回答 (1件)

Q1)項2に記しました、クラスpublic class xxx extends test{}の中で、変数a


  にアクセスする方法はあります?。
A1)この a にアクセスするには test またはその派生クラスのインスタンスが必要です。
  クラス定義の直下でただ単に a と書いてもどのインスタンスの a なのかわかりません。
  何らかのインスタンスメソッド(コンストラクタを含む)を定義してその中でアクセスしてください。

Q2) クラスxxxxをnewで使用する方法はありますか?
   注) this.xxxx=new xxx(); <---コンパイルエラーになる
A2)「変数」xxxx を定義していないのですからコンパイルエラーになるのは当然です。
  test に適切な型で変数 xxxx を定義してください。
  ……というか、コンパイラが「シンボルを見つけられません」と、見つからないシンボルの名前と一緒に言うはずなのですが……。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!