java中内部类的问题

来源:互联网 发布:语义网络 编辑:程序博客网 时间:2024/05/23 23:23
1.   private修饰类的时候只可以修饰内部类。对于顶级类(外部类)来说,只有两种修饰符:public和默认(default)。因为外部类的上一单元是包,所以外部类只有两个作用域:同包,任何位置。因此,只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符:public和默认(default)。
既然你问的类使用了private修饰符,说明是个内部类。内部类的上一级是外部类,那么对应的有四种访问控制修饰符:本类(private),同包(default),父子类(protected),任何位置(public)。
在一个类中定义了一个private的内部类,在另外一个类里边就是不可以访问的了

2.   No enclosing instance of type Jzhi is accessible. Must qualify the allocation with an enclosing instance of type Jzhi (e.g. x.new A() where x is an instance of Jzhi).

package Datastru;

public class Jzhi {
    private static int a;

    public static void main(String[] args) {
        OutPut out = new OutPut();
        out.out();
    }

    private static class OutPut {
        public void out() {
            System.out.print("12");
        }
    }
}

这个错误说的是没有可访问的内部类的实例,原因是我写了一个内部类OutPut是一个动态类,就是没有用static来修饰,而主程序public static main是一个静态方法,所以只有把内部类定义为静态类才可以在主函数里边调用这个类中的方法和变量



1 0
原创粉丝点击