您的位置:首页 > 编程语言 > Java开发

Java 访问权限问题

2016-05-03 11:46 260 查看
纸上得来终觉浅
笔记下Java访问权限的问题:

1.首先是四种情况: Public ,不加修饰符,Protected,Private;

2.下面是修饰的对象:

1)修饰类名: 只能是Public和“不加修饰符”,Protected和Private,类要么被本包访问,要么被其他包访问, 不然就没有意义。(有一种例外情况,修饰内部类,以后讲到)

2)根据上篇文章,一个类最多可以由一下几个部分构成:

A.静态成员变量

B.非静态成员变量

C.静态代码块

D.构造代码块

E.构造函数

F.静态方法

G.非静态方法

其中除了C和D,其他都是可以由上面的四种修饰符修饰。四种修饰符的作用如下图:



3)当构造函数的修饰符是Protected的时候,表示希望生成子类的对象; 当修饰符是Private的时候,可用于单例模式,即对象的初始化操作放在类中,如:

public  class Test1 {
private Test1 test1 = null;
private Test1(){

}
public Test1 getTest1(){
if(test1 == null)
test1 = new Test1();
return test1;
}
}
3.Static初始化仅发生一次——在对象首次载入的时候

4.上一篇文章讲述了类的初始化顺序,侧重点是在内存的分布,有些初始化时的详细顺序没有理清楚:下面是初始化的详细步骤:

对象的初始化:

1)首先初始化类,即执行Static (包括Static成员变量,Static代码块,顺序与书写顺序相同),加载到内存。

2)然后初始化对象(包括非Static成员变量,构造代码块,顺序与书写顺序相同)

3)构造函数

4)最后其中还有静态方法和非静态方法,不存在初始化这个概念,使用即可。 在1)就已经加载到内存了。

如果有父类的话,步骤如下:

1)首先初始化父类,即执行Static (包括Static成员变量,Static代码块,顺序与书写顺序相同),然后子类,加载到内存。

2)然后初始化父类对象(包括非Static成员变量,构造代码块,顺序与书写顺序相同)

3)父类构造函数

4)然后初始化子类对象(包括非Static成员变量,构造代码块,顺序与书写顺序相同)

5)子类构造函数

6)最后其中还有静态方法和非静态方法,不存在初始化这个概念,使用即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息