public class  Base
{
private int a;
public Base(int a)
{
this.a=a;
}
public int getA()
{
return a;
}
public class Sub extends Base
{
private int b;
public Base(int a,int b)
{
super(a);
this.b=b;
}
public int getB()
{
return b;
}
} public void main(String[] args) 
{
Sub sub=new Sub(1,2);
System.out.println("a="+sub.getA()+"b="+sub.getB());
}
}

解决方案 »

  1.   

    想问一下你是要练习内部类吗?如果不是要这样才会有结果public class Base {
    private int a; public Base(int a) {
    this.a = a;
    } public int getA() {
    return a;
    }

    public static void main(String[] args) {
    Sub sub = new Sub(1, 2);
    System.out.println("a=" + sub.getA() + "b=" + sub.getB());
    }
    }
    class Sub extends Base {
    private int b; public Sub(int a, int b) {
    super(a);
    this.b = b;
    } public int getB() {
    return b;
    }
    }
      

  2.   

    把a,b定义成public就好了,在类b中不能直接引用a中的私有成员变量。。
      

  3.   

    嗯,是的,楼上高手我刚接触java 能不能帮忙详解一下啊,谢谢了
      

  4.   

    当需要创建内部类对象,例如你上面的例子你就需要  在主函数中写如下[code=java][Base b=new Base(1);
    Base.Sub sub=b.new Sub(1,2);/code]
      

  5.   

    Base b=new Base(1);
    Base.Sub sub=b.new Sub(1,2);
      

  6.   

    你修改的程序运行处结果了,不过我还是不明白把main()函数和继承换换位置就能运行出来就结果
      

  7.   

    你如果将一个类A放在另一个类B的内部去定义 那么类A就是成员内部类 那么你在main中实例化A的时候  就需要通过外部类来实例化内部类 如回帖5  可是如果你将子类放在外部 他就是一个正常的类 可以按正常的方法实例化就如回帖1
      

  8.   

      public static void main(String[] args) {
            Sub sub = new Sub(1, 2);
            System.out.println("a=" + sub.getA() + "b=" + sub.getB());
        }
    }
    class Sub extends Base {
        private int b;
     
        public Sub(int a, int b) {
            super(a);
            this.b = b;
        }
     
        public int getB() {
            return b;
        }
    }
    不是很理解、?????
      

  9.   

     public static void main(String[] args) {
            Sub sub = new Sub(1, 2);
            System.out.println("a=" + sub.getA() + "b=" + sub.getB());
        }
    }
    class Sub extends Base //怎么放在main()后面,就可以执行出来,源程序为什么不可以啊
    {
        private int b;
     
        public Sub(int a, int b) {
            super(a);
            this.b = b;
        }
    我刚接触java
      

  10.   

    main函数是程序的入口  我要是将sub放在base外部的话,我就直接可以用sub了,可是如果我将sub放在base内部的话我就需要通过base访问到sub
      

  11.   

    public class Base {
    private int a; public Base(int a) {
    this.a = a;
    } public int getA() {
    return a;
    } class Sub extends Base {
    private int b; public Sub(int a, int b) {
    super(a);
    this.b = b;
    } public int getB() {
    return b;
    } } public static void main(String[] args) {
    Base b = new Base(1);
    Base.Sub sub = b.new Sub(3, 2);
    System.out.println("a=" + sub.getA() + "b=" + sub.getB());
    }}这是把sub放在里面的注意一下主函数  你就会发现发在里面与放在外面的区别
      

  12.   

    你把你的main方法放到sub类里就可以了不要单独建个类来测试程序。你的b是private类型的,它的范围只是在sub类里。
      

  13.   

    public class Base {
    private int a; public Base(int a) {
    this.a = a;
    } public int getA() {
    return a;
    } public class Sub extends Base {
    private int b; public Sub(int a, int b) {
    super(a);
    this.b = b;
    } public int getB() {
    return b;
    }
    } public static void main(String[] args) {
    Sub sub = new Base(1).new Sub(1, 2);
    System.out.println("a=" + sub.getA() + "b=" + sub.getB());
    }
    }这个内部类要这样实例化,编译应该都错误提示的,要注意看才能提高!