访问控制符
private 当前类访问权限:该成员只能被当前类中的其他成员访问,不能再类外看到;
缺省 包访问权限:一个类或类的成员前无任何访问控制符,就获得缺省权限,缺省的可以被同一包中的所有类访问;
protected 子类访问权限:其成员既可以被同一个包中的其它类访问,也可以被不同包中的子类访问;
public 公共访问权限:该成员可被同包或不同包的所有类访问;
关键字:static
一旦将成员设置为static,数据或方法就不会同那个类的任何对象实例联系到一起;
即使从未创建那个类的一个对象,仍能调用一个static方法,或者放问一些static数据;
由于static方法不需要创建任何对象,所以他们不可简单的调用其他成员;
类变量是和类相关联的数据变量,也就是说,类变量是和该类所创建的所有对象相关联的变量,改变其中一个对象的这个类变量就同时改变了其他对象的这个类变量;
静态方法只能掉用静态方法或成员;//可称之为全局
非静态成员又叫实例成员;
注意:
static方法仅能调用其他static方法;
他们只能访问static数据;
他们不能以任何方式引用this或super;
static代码块:
类中有static块的话,创建类的第一个对象或者是加载类的时候会自动执行,且只执行一次;
具体区别
类变量可以通过对象名访问,也可以通过类名访问;
实例变量只和相应的对象关联,不同对象的实例变量存储在不同空间;实例变量只能通过对象名访问;
静态方法不能直接访问非静态变量,只能通过new 类名().成员变量名,也就是以对象的形式访问;当然也可以用同样的方式访问非静态方法;
对于一般的非static成员变量或方法,需要有一个对象的实例才能调用,所以要先生成对象的实例,他们才会实际的分配内存空间。而对于static的对象或方法,在程序载入时便已经分配了内存空间,他只和特定的类想关联,无需实例化。
类的静态变量和方法,在内存中只有一份,共所有对象使用,起到全局作用;
静态变量不能用this;
静态方法是有默认值的;而成员方法没有,必须先赋值在使用;