一、static与private
**static:**限定了被声明的方法或属性的访问方式,只能通过类名进行访问。
**private:**限定了被声明的方法或属性的作用域,仅限被本类内的成员进行访问,无法通过类或该类对象直接访问。
**存储区别:**Static声明的成员被称为类成员,即该成员属于该类所有的该类成员都共享这一块内存,不会随着每个对象的创建而新建一块内存副本,private声明的成员被称为私有成员,在类创建新对象时,每一个对象都会有属于自己的内存,不同对象间互不影响。
在使用static时要注意的是:1、静态方法内部不能直接调用非静态成员,但可以通过对象间接使用。2、静态方法内部不能使用与this(与实例有关)3、若类中包含静态有初始值的静态字段,编译器会在编译时自动生成静态构造函数。4、一个类可以同时拥有具有相同参数列表的构造函数和静态构造函数,这也是唯一可以具有相同参数列表的同名方法共存机会。
二、protected
protected的限定范围介于private和public之间,他不允许类名或对象的访问,但当该类作为父类继承给子类的有protected修饰的成员,就可以允许子类内部成员对该继承来的protected成员进行访问(private成员可被继承,但不可被子类访问)。