您的位置:首页 > 编程语言 > Java开发

Java基础:第三十二讲 静态成员

2010-01-15 16:29 204 查看
Java是面向对象的语言,在开发的时候要以对象的方式来组织代码,方法和属性应该属于某个对象,而不是独立存在。

在Java中还存在一类方法和属性,不属于某个具体对象,而是多个对象共享的,称为静态方法或者静态属性。

1、静态属性

静态属性是某个类的所有对象共享的属性,通过static关键字定义。下面的代码定义了一个静态属性:

public Class Person(

public static int count;

)

要访问静态属性,可以通过对象名,还可以通过类名。下面的代码都是正确的:

方式一:

Person.count = Person.count+1;

方式二:

Person person = new Person();

person.count++;

这与非静态成员是不同的,非静态成员只能通过对象名调用,每个对象都有自己对应的属性,例如张三有自己的身高,李四有自己的身高。因为静态成员是对应到类的,而非静态成员是对应到对象的,每个对象都会有一个。假设,Person类实例化了6个对象,对于静态成员,内存中只有一个空间来保存这个属性,而非静态成员会有6个,每个对象一个。所以,静态成员又称为类成员,非静态成员称为对象成员。

实例:写出下面代码的输出结果

Person p1 = new Person();

p1.count=10;

Person p2 = new Person();

p2.count=20;

System.out.println(p1.count);

System.out.println(p2.count);

答案:20 20鼠标选中查看答案。

2、静态方法

静态方法属于类的方法,不属于某个具体对象的,所以静态方法不能访问非静态成员。

静态方法的定义,使用关键字static,下面定义了一个静态方法,对count进行操作:

public static void setCount(int count){

Person.count = count;

}

public static int getCount(){

return count:

}

实际上,大家在课程已开始的时候就已经使用静态方法了,记不记得main方法的定义?

静态方法不能访问非静态属性,下面的代码就是错误的:

public int height;

public static int getHeight(){

return height;

}

问题:什么时候用静态方法呢?

答案:如果方法执行过程中不使用对象的属性(也就是非静态成员变量),只是用静态成员变量或者通过参数传入的信息,这时候方法的处理过程与对象无关,所以可以设置成静态方法,并且应该设置成静态方法。

鼠标选中查看答案。

3、静态初始化器

构造方法用于对成员变量进行初始化,静态成员变量不属于某个对象,如何对静态成员变量进行初始化呢?使用静态初始化器。下面就是一段静态初始化器代码:

static{

count=0;

}

static引导的一对大括号,括号中包含对静态成员的初始化代码,这就是静态初始化器,可以认为是比较特殊的方法,没有返回值类型,没有参数,没有方法名,因为它是在加载类的时候调用的。

注意:静态初始化器中只能对静态成员进行操作,不能对非静态成员进行操作。

下一次介绍一个简单的面向对象的例子。

上一次: 第三十一讲 常量成员
下一次: 第三十三讲 父类与继承
李绪成 CSDN Blog:http://blog.csdn.net/javaeeteacher
邀请您为好友:http://student.csdn.net/invite.php?u=124362&c=7be8ba2b6f3b6cc5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: