java面向对象编程(四)--类变量、类方法

时间:2023-03-08 16:46:57

1.什么是类变量?

类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。

如何定义类变量?

定义语法:

    访问修饰符 static 数据类型 变量名;

如何访问类变量?

    类名.类变量名 或者 对象名.类变量名

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

public class Demo113{
public static void main(String []args){
/*非面向对象方法
int total=0;
Child ch1=new Child(3,"妞妞");
ch1.joinGame();
total++;
Child ch2=new Child(4,"小小");
ch2.joinGame();
total++;
*/
//面向对象办法
Child ch1=new Child(3,"小龙");
ch1.joinGame();
Child ch2=new Child(4,"刚子");
ch2.joinGame();
Child ch3=new Child(5,"康康");
ch3.joinGame();
System.out.println("共有="+Child.total);
}
} //定义小孩类
class Child{
int age;
String name;
//total是静态变量,因此它可以被任何一个对象访问
static int total=0;
public Child(int age,String name){
this.age=age;
this.name=name;
}
public void joinGame(){
total++;
System.out.println("有一个小孩加入了");
}
}

2.什么是类方法,为什么有类方法?

类方法是属于所有对象实例的,其形式如下:

访问修饰符 static 数据返回类型 方法名(){}

注意:类方法中不能访问非静态变量(类变量)。

使用:

类名.类方法名 或者 对象名.类方法名

static静态的方法可以访问static静态变量,不能访问非静态变量(类变量),非静态方法可以访问非静态变量(类变量),同时也可以访问static静态变量。

案例:统计总学费的程序代码,加深static静态的方法由静态变量的访问[Demo115.java]

public class Demo115{
public static void main(String []args){
//创建一个学生
Stu stu1=new Stu(29,"aa",340);
Stu stu2=new Stu(29,"aa",240);
System.out.println(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;
}
//返回总学费[这是一个类方法(静态方法)]
//java中规则:类变量原则上用类方法去访问或操作
public static int getTotalFee(){
return totalFee;
}
}

3.其他问题

1、什么时候需要用类变量

如案例[Demo115.java]:定义学生类,统计学生共交多少钱?用类变量,表示公共的属性

2、类变量与成员变量区别:

a.加上static称为类变量或静态变量,否则称为成员变量

b.类变量是与类相关的,属于公共的属性

c.成员变量属于每个对象个体的属性

d.类变量可以通过 [类名.类变量名] 直接访问

3、什么时候需要用类方法

如案例[Demo115.java]:定义学生类,统计学生共交多少钱?

4、类方法与类变量区别:

a.类方法属于与类相关的,属于公共的方法

b.成员方法属于每个对象个体的方法

c.类方法可以通过 [类名.类方法名] 直接访问