JAVA类成员访问权限

刚在不同的package里对类成员进行访问时出现了访问权限的问题

package MainPackage;

/**
 * Created by LiHui on 2015/4/25.
 */
import Package1.*;

public class Main {
    public static void main(String[] args){
        MyClass1 m1 = new MyClass1();
        m1.money = 1;
        MyClass2 m2 = new MyClass2();
        m2.value = 2;
    }
}

class MyClass2 {
    int value;
}
package Package1;

/**
 * Created by LiHui on 2015/4/25.
 */
public class MyClass1 {
    int money;
    public MyClass1(){
        System.out.println("From MyClass1");
    }
}

这里编译的时候,会提示money在Package1.MyClass1中不是公共的,无法从外部来进行访问;但是同样是成员变量的value却没这个问题,可见假如在定义的时候不指定任何权限,默认的状态下,在同一个package和不同的package下是导致访问权限的问题所在,在default状态下,最多只能访问本包

public:可以访问同一个类,同一个包,子类,以及其它的包,这里money改成public就可以访问

protected:可以访问同一个类,同一个包,子类,但是无法访问外部的包,比如这里money改成protected会和目前default一样的错误

default:可以访问同一个类以及同一个包,但是子类和外部的包无法访问,也就是不加任何修饰的这种情况

private:只能访问同一个类的情况

发表回复