本文已参与「新人创作礼」活动,一起开启掘金创作之路
实例变量和类变量
1.不同对象的实例变量互不相同
2.所有对象共享类变量
3.通过类名直接访问类变量(但java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类中的实际变量就不会被分配内存,但是,类中的类变量,在该类被加载到内存时,就分配了相应的内存,类变量的内存空间直到程序退出运行,才释放所占用的内存。
4.7.3 实例方法和类方法的定义
类中的方法可分为实例方法和类方法(静态方法),方法声明的时候,方法类型前面不加关键字static 修饰的是实例方法,加static关键字修饰的是类方法
实例方法和类方法的区别
1.对象调用实例方法
当类的字节码被加载到内存时,类的实例方法不会被分配入口地址,只有该类创建对象后,类中的实例方法才会分配入口地址,从而实例方法可以被创建的任何对象调用,需要注意的是,当创建对象后,类中的实例方法就分配了入口地址,但再创建新的对象时,不再分配入口地址,也就是说,方法的入口地址被所有的对象共享,当所有的对象不存在的时候,方法的入口才会被取消。
实例方法不仅可以操作实例变量,且可以操作类变量
2.类名调用类方法
对于类中的类方法,在该类被加载到内存时,就分配了相应的入口地址,所以类除了可以被各个对象所调用,还可以通过类名进行调用,实例方法不能通过类名调用,只能通过对象名调用
类方法不可操作实例变量,因为在类创建对象前类中的成员变量还没有分配内存
3.设计类的方法的原则
如果该方法与类中的实例变量没有任何联系,就可以满足要求,将它设为类方法,如Arrays类
4.12访问权限
1.私有变量和私有方法(private)
如果类中的成员变量或方法为private的时候,不同对象之间不可调用,即使是静态变量和静态方法也不可调用。
2.共有变量和共有方法(public)
与私有变量完全相反,若类中的成员变量或方法设为public的时候,不同对象之间可以随便调用,静态变量和静态方法更可以随便调用了
3.友好变量和友好方法
不用public、private、protected修饰符修饰的成员变量和方法被称为友好变量和友好方法
该访问权限是在同一个包下才可以相互访问,不在同一个包下的不能相互访问
4.受保护的成员变量和方法(protected)
同友好变量和方法
public类和友好类
可以在任何一个类中使用public类创建对象
只能在同一个包中用友好类创建对象
一个java文件一般只有一个共有类,即主类