public class b extends a{
  public b(){
    super();
  }
  
  b b1=new b();
}记不太清楚了,好象是这样
或者b b1=new a();

解决方案 »

  1.   

    如果 class b extends a那么 b b1=new a();是错误的,应该颠倒过来:a a1=new b();
      

  2.   

    多谢帮我问,不同意楼上的说法,
    两个原因,因为
    1、b类是很简单的类要从复杂的a类继承太不合理了
    2、所有的b类实例都要存取的是一个a1类里面的二位数组,而不是各自的.
      

  3.   

    在b类定义一个构造函数b(a a1),在a类中调用创建b1时,将a类的一个实例a1传进去。
      

  4.   

    需求:
    1.运行时,a只能有一个实例,b类有多个实例
    2.b类的实例对象obj能随时调用a类实例a1,并能随时设置a1的数组array.
    我的代码如下(欢迎批评指正):
    class a{
        int[][] array;
    private static a a1 = new a();
    a(){
    }
    public static a getA(){
    return a1;
    }}class b{
    a a1=a.getA();
    b()
       {
       }
       
       void setArray(int[][] temp){
        a1.array=temp;
        }
    }class Test{
    public static void main(String[] args) {
    b obj=new b();
    int[][] temp={{1,2},{3,4},};//可随意设置
    obj.setArray(temp);
    for(int i=0;i<obj.a1.array.length;i++)
    for(int j=0;j<obj.a1.array[i].length;j++)
    System.out.println("array["+i+"]["+j+"] = "+obj.a1.array[i][j]);
    }
    }
      

  5.   

    非常同意 han10(虚心学习中...) 的做法,不过你的
    for(int i=0;i<obj.a1.array.length;i++)
       for(int j=0;j<obj.a1.array[i].length;j++)
          System.out.println("array["+i+"]["+j+"] = "+obj.a1.array[i][j]);
    要改成
    a newa= a.getA();
    for(int i=0;i<newa.array.length;i++)
       for(int j=0;j<newa.array[i].length;j++)
          System.out.println("array["+i+"]["+j+"] = "+newa.array[i][j]);
    才对
    另外如果你的int[][] array;
    改成static int[][] array;
    则上面可以改成
    for(int i=0;i<a.array.length;i++)
       for(int j=0;j<a.array[i].length;j++)
          System.out.println("array["+i+"]["+j+"] = "+a.array[i][j]);
    另外你的变量名array不太好。
    欢迎大家批评指正