public class Number {
   int a,b;
   public Number(int a,int b){
   this.a=a;
   this.b=b;
   }
 
   class Ma extends Number{
   public Ma(int x,int y){
   super(x,y);
   }
   public double getNmuber(){
   return a*b;
   }
   }
   public static void main(String []args){
  Ma a=new Ma(3,4);
   System.out.println(a.getNmuber());
   }
}为什么编辑通不过   ???

解决方案 »

  1.   

    你这样肯定通不过 public class Number {
    int a, b; public Number(int a, int b) {
    this.a = a;
    this.b = b;
    } public static void main(String[] args) {
    Ma a = new Ma(3, 4);
    System.out.println(a.getNmuber());
    }
    }class Ma extends Number {
    public Ma(int x, int y) {
    super(x, y);
    } public double getNmuber() {
    return a * b;
    }
    }
      

  2.   

    能不能换个类名,jdk里有 java.lang.Number
      

  3.   

    因为你的Ma类是在Number类里面的,所以要通过Number类实例来引用Ma
    给Number 增加无参构造函数
    改成
      Ma a = new Number().new Ma(3, 4);
      

  4.   


    public class Number
    {
        int a, b;
        
        public Number()
        {
            
        }
        
        public Number(int a, int b)
        {
            this.a = a;
            this.b = b;
        }
        
        class Ma extends Number
        {
            public Ma(int x, int y)
            {
                super(x, y);
            }
            
            public double getNmuber()
            {
                return a * b;
            }
        }
        
        public static void main(String[] args)
        {
            Ma a = new Number().new Ma(3, 4);
            System.out.println(a.getNmuber());
        }
    }
      

  5.   

    这是非静态内部类。
    在类的非静态方法中调用该类的非静态内部类,可以直接new。 
    在类的静态方法中调用该类的非静态内部类,就必须通过外部类的实例来new。也就是说假如你在Number里面定义一个非静态方法,你就可以Ma a = new Ma(3, 4);这样来new
    但是main 是static的  是类函数不是实例函数,所以必须通过Number的实例来new Ma的实例 
      

  6.   

    访问没有封闭 Number类型的实例。必须限定的分配与封闭类型 Number(例如 x.new a (),其中 x 是 Number 的实例) 的实例。
    按如下方式就可以了:
    public class Number {
    int a, b; public Number(int a, int b) {
    this.a = a;
    this.b = b;
    } class Ma extends Number {
    public Ma(int x, int y) {
    super(x, y);
    } public double getNmuber() {
    return a * b;
    }
    } public static void main(String[] args) {
    Number n = new Number(1,2);
    Number.Ma m = new Ma(1,1);
    System.out.println(m.getNmuber());
    }
    }