2.24 Java基础总结 ①访问权限②static③静态方法④实例初始化块⑤静态初始化块

①访问权限②static③静态方法④实例初始化块⑤静态初始化块
一、访问权限

默认是同包
protected是有关系的,即同包和不同包的子类
private只有本类,public全部

  本类   同包 不同包  
    子类 非子类 子类 非子类
private        
默认(同包)    
protected  
public

二、static

static可以修饰属性(一个值),方法(预加载,类级别),初始化块(只执行一次),成员内部类(相当于属性)(本类直接new出来,外部new时需要用 外部类类名.new)

不能修饰类,类只能用这几个修饰 only public, abstract & final are permitted
不能修饰构造,因为构造器是构造对象的,static是类级别,在加载类的时候就加载了,only public, protected & private are permitted
不能修饰局部变量,only final is permitted
不能修饰局部内部类,only abstract or final is permitted


静态成员变量,类级别,全类共享一个
Person.country = "中国";
一般用在有共同的属性的时候,或者常量
public static final int PI = 3.14;否则每个对象在new 的时候都会有个PI,浪费空间
可以不创建对象直接调动,也可以new一个对象在调用
特点①与对象无关,与类有关②全类共享一个值③预加载(随着类的加载而被加载)

public static int num = 0;
构造(){
num++;
}

三、静态方法
随着类的加载而被加载
static的方法不能操作非static的任何属性和方法,
原因:①类级别,与对象无关②类先被加载,非static的还没有被加载到内存

常用在:工具类的工具方法

四、实例初始化块
{}
构造(){}
在产生对象的时候自动执行,new几次执行几次,使用量少,因为完全可以写到本类构造方法前几行
在父类的构造方法之后,在本类的构造方法之前

五、静态初始化块
static{}
类加载的时候自动执行,且只会执行一次,使用量大
比如在一些准备工作,文件的准备,数据库初始化

new 子类();

执行顺序:fu静,子静,fu实,fu构,子实,子构
父类静态初始化块,子类静态初始化块(先对象,new子类会先调父类)
父类实例初始化块,父类构造器(调子类构造会先调父类构造,实例初始化块在构造器之前)
子类实例初始化块,子类构造器

原文地址:https://www.cnblogs.com/chenyuanqiu2008/p/5215525.html