.java文件中public class

来源:互联网 发布:openwrt 定时mac 编辑:程序博客网 时间:2024/05/17 20:26

今天在敲代码,有个C++的过来了,看到类名前面有个public,问我这是什么意思,我竟然一时疑惑了,因此在这里总结下:

 

public声明的类才可以被外部访问,也就是可以被任何类访问。

如果定义成private的话,只能被同一目标的类访问。

private class ClassA {        public static void main(String[] args) {            }}

这样定义,在eclipse里面是会报错的,只能定义成public或者把private去掉不写(不写默认是protected的,也就是同包名下面的可以访问,其他包下面的不能访问)。下面把这个类定义成public

public class ClassA {        public static void main(String[] args) {            }        private class ClassA_Inner{            }}

这样B类就可以访问A类,但是不能访问A类的私有类:

public class ClassB {    public static void main(String[] args) {        ClassA classA=new ClassA();        
        // 下面的定义是错误的:
        //no enclosing instance of type is accessible
        ClassA_Inner inner=new ClassA_Inner();
    }}

内部类报错的原因是写的内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public class改为public static class.

 

最后补充一下,如果定义的这个类不写public,则.java文件的名称为任意,但是只有同一个package下面的类才能访问。

比如:我创建一个ClassC.java文件,里面的内容为:

class ClassCTest {}
0 0