类变量和方法
类变量:
案例:
- 在main中定义一个变量count
- 如果方法执行一次count++
- count最后记录了多少次?
分析:
-
count 是一个独立于对象/类变量,
-
访问count很麻烦 ,没有使用到oop
-
因此,这里我们可以使用类变量/静态变量
解决:
- 我们可以设计一个int total来表示总的执行次数,当方法,每次执行是total就加1,并且total是所有对象共享的。
class child{
private String name;
public static int totalNum=0;
}
什么是类变量:
- 类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。
定义类变量:
- 访问修饰符 static 数据类型 变量名;
- static 访问修饰符 数据类型 变量名;
访问变量: - 类名.类变量名;
- 对象名.类变量名
- (静态变量的访问修饰符的访问权限和范围 和普通属性的一样)
注意和细节: - 当我们需要让某个类的所有对象都共享一个变量的时,就可以考虑使用类变量(静态变量)。
- 类变量是该类的所有对象共享的,实例变量是每个对象独享的
- 加上static称为类变量或静态变量,否则称为实力变量/普通变量/非静态变量
- 类变量可以通过 类名. 类变量名或者 对象名.类变量名来访问。
- 实例变量不能通过 类名. 类变量名方式访问。
- 类变量是在 类加载时就初始化了,也就是说,即使你没有创建对象,只要类加载了就可以使用类变量。
- 类变量的生命周期时随类的加载开始的,随类的消失而消失。
类方法:
-
类方法也叫静态方法。
-
访问修饰符 static 数据返回类型 方法名(){}
-
static 访问修饰符 数据返回类型 方法名(){}
类方法的调用 -
类名.类方法名
-
对象名.类方法名
-
(满足访问修饰符的访问权限和范围)
-
当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高效率。
类方法的细节和注意事项 -
类方法和普通方法都是随着类的加载而加载,将结构的信息存储在方法区:(类方法中没有 this的参数)(普通方法中隐含这this的参数)
-
类方法可以通过类名或者对象名调用
-
普通方法和对象有关,需要通过对象名调用,比如对象名.方法名(参数),不能通过类名调用
-
类方法中不允许出现和使用和对象有关的关键字,比如this和super,普通方法(成员放法)可以。
-
类方法(静态方法)中 只能访问 静态变量或者静态方法。
-
普通成员方法,既可以访问普通变量(方法)或静态方法(变量)