//我想在c类的main函数中实例化一个内部静态类B下面的写法有问题,请问该如何修改?
 class A
 {
 static class B
 {
 void qq()
 {
 System.out.println("innter");
 }
 }
 }
 class C
 {
 public static void main(String args[])
 {
A.B x=new A().new B();
 }
 }

解决方案 »

  1.   

    class A
     {
     static class B
     {
     B(String ff)
     {
     }
     void qq()
     {
     System.out.println("innter");
     }
     }
     }
     public class C
     {
     public static void main(String args[])
     {
        A.B x=new A.B("ff");
     }
     }
      

  2.   

    楼上的朋友谢谢你了,给我了两次回复,我还是有点不明白,
    A.B x=new A.B("ff");
    此时实例化当中有没有生成A类的实例?
    还有一点,因为B类是表静态的,也就是说是在编译的时候生成在.class文件中的.那么为什么还要用new去构造它的实例呢,如果说new 构造的是A类的实例之后直接调用B类的话,那么new A.B("ff")当中的A为什么不加号呢?如new A().b("ff")
    还请AWUSOFT(程序设计,一个字:爽!)帮我解释一下,谢谢你了
      

  3.   

    A.B x=new A().b("ff")
    没有这样写的哦
      

  4.   

    那么a.super()到底表示什么呢?
    上面的那个小a为类的实例.
    我只用过在子类中的构造方法中用super()调用父类的构造函数,如果在子类的构造方法中加上:
    对象.super()那么到底是表示什么呢?
      

  5.   

    哈哈,老兄,我们上面的这个程序:a.super()其中a是A类的一个实例对象,但是A类没有父类啊?
    那么它调用的是谁的构造方法呢?
      

  6.   

    哈哈哈.......笑吧
    别忘记了,所有类都直接或者间接继承Object....
    呵呵嘻嘻....
      

  7.   

    不好意思我们所说的不是一个程序,我把这个程序写给你看如下:
    class A
    {
    class B
    {}
    }
    class C extends A.B
    {
    C(A a)
    {
    a.super();
    }
    public static void main(String args[])
    {
    A a=new A();
    C c=new C(a);
    }
    }
    我所说的a.super()就是指上面这个程序的a.super()我知道如果想继承一个内部静态类的时候,必须先实例化好它的外部类的实例,我们上面这个程序在main函数当中不是已经实例化好了A类的实例a了吗?为什么还要在C类的构造方法中再次调用a.super()呢?如果按照你说的那样a.super()应当是调用object类,请问,此时调用object类又有何意思呢?
      

  8.   

    如果你的内部类不是STATIC的话,new 外().内()可以
      

  9.   

    楼上的penhuasheng说的我以前知道:楼上的AWUSOFT(程序设计,一个字:爽!) 你好,不知道,你是在上班还是在上学,如果你是在上班的话,有可能快要下班了,这样讨论太慢了,我想通过QQ我们讨论一下好吗?我的QQ是351974772(昵称是:笑看风云)