目录
1、实例变量和类变量的声明
在声明成员变量时,用关键字static给予修饰的称作类变量,否则称作实例变量(类变量也称为static变量,静态变量)。
2、实例变量和类变量的区别
-
不同对象的实例变量互不相同
-
所有对象共享类变量
-
通过类名直接访问类变量
举例说明:
两个房间(实例)。
房间里各有一个电视(实例变量),虽然这两个电视的品牌和型号等都相同(一模一样的电视),但此刻播放的频道不一定相同。
房间里通有同一条水管(类变量),无论水管里通热水还是冷水,两个房间里接收到的水都一样。
代码实例:
两个梯形(实例),上底和高(实例变量),下底(类变量)。
代码实现:
public class Ladder{
double 上底,高; //实例变量
static double 下底; //类变量
void 设置上底(double a) {
上底 = a;
}
void 设置下底(double b) {
下底 = b;
}
double 获取上底() {
return 上底;
}
double 获取下底() {
return 下底;
}
}
public class LadderTest{
public static void main(String[] args){
Ladder.下底 = 100; //Lader的字节码被加载到内存,通过类名操作类变量
Ladder ladderOne = new Ladder();
Ladder ladderTwo = new Ladder();
ladderOne.设置上底(28);
ladderTwo.设置上底(66);
System.out.println("ladderOne的上底:"+ladderOne.获取上底());
System.out.println("ladderOne的下底:"+ladderOne.获取下底());
System.out.println("ladderTwo的上底:"+ladderTwo.获取上底());
System.out.println("ladderWwo的下底:"+ladderTwo.获取下底());
}
}
3、实例方法和类方法的定义
类中的方法也可分为实例方法和类方法。方法声明时,方法类型前面不加关键字static修饰的是实例方法、加static关键字修饰的是类方法(静态方法)。
4、实例方法和类方法的区别
1)对象调用实例方法
当对象调用实例方法时,该方法中出现的实例变量就是分配给该对象的实例变量;该方法中出现的类变量也是分配给该对象的变量,只不过这个变量和所有的其他对象共享而已。实例方法中不仅可以操作实例变量,也可以操作类变量,实例方法可以调用类里的实例方法和类方法(不包括构造方法)
2)类名调用类方法
从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。和实例方法不同的是,类方法不可以操作实例变量,这是因为在类创建对象之前,实例成员变量还没有分配内存。类方法不可以调用类里的实例方法,只可以调用类里的类方法