现在的位置: 首页 > 综合 > 正文

韩顺平–面向对象类变量、类方法

2013年08月12日 ⁄ 综合 ⁄ 共 1471字 ⁄ 字号 评论关闭
类变量
.什么是类变量?
类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量.这个从前面的图也可看出来.
.如何定义类变量?
  定义语法:
  访问修饰符 static 数据类型 变量名;
.如何访问类变量?
  类名.类变量名 或者 对象名.类变量名
.类变量一分析问题
请看下述程序一个程序,看看结果是多少?主要考察:对静态变量的理解.
public class Demo3_2 {
static int i = 1;
static{//这个方法叫“静态区域块“
System.out.println("A");
//该静态区域块只被执行一次
i++;
}
public Demo3_2(){
System.out.println("B");
i++;
}
public static void main(String []args){
Demo3_2 t1 = new Demo3_2();
System.out.println(t1.i);

Demo3_2 t2 = new Demo3_2();
System.out.println(t2.i);
}
}
输出:
A
B
3
B
4
问大家一个问题,我一个对象也不创建对象实例(把Main中方法都注释),static int i = 1;这个静态变量就已经存在代码区了,他已经存好了。
.什么是类方法,为什么有类方法?
类方法是属于所有对象实例的,其形式如下:访问修饰符 static 数据返回类型 方法名(){  }
注意:  类方法中不能访问非静态变量(类变量).
使用:  类名.类方法名  或者  对象名.类方法名
请大家看一个小案例.(统计学费总和)
public class Demo3_2 {
public static void main(String []args){
//创建一个学生
Stu stu1 = new Stu(19,"aa",340);
Stu stu2 = new Stu(18,"bb",340);
System.out.println(Stu.getTotalFee()); //访问Stu对象的getTotalFee静态方法
}
}

//学生类
class Stu{
int age;
String name;
int fee;
static int totalFee;
public Stu(int age,String name, int fee){
this.age = age;
this.name = name;
totalFee+= fee;
}
//返回总学费[加了static,这是一个类方法(静态方法)],这样也节省你栈的开销
//java中规则 :类变量原则上用类方法去访问和操作
public static int getTotalFee(){  
//age++; 这样会报错.....
return totalFee;
}
}
输出:
680
注释补充 //age++; 这样会报错,因为"类方法中不能访问非静态变量(类变量)",
//totalFee++就是正确的了
.类变量小结
1.什么时候需要用类变量
案例:定义学生类,统计学生共交多少钱?
用类变量,属于公共的属性
2.类变量与实例变量区别:
.加上static称为类变量或静态变量,否则称为实例变量
.类变量是与类相关的,公共的属性
.实例变量属于每个对象个体的属性
.类变量可以通过类名.类变量名直接访问

有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩,请使用面向对象的思想,编写程序解决。

如果,设计一个int total表示总人数,我们在
创建一个小孩时,就把total加1,并且total
所有对象共享的就ok了!
画一个小图给大家理解。

抱歉!评论已关闭.