在定义类时,经常需要抽象出它的属性,并定义在类的主体中,在类中定义的属性也称为类的成员变量。
成员变量是抽象出来的类属性,成员变量一般不能直接被外部访问或修改,需要通过get和set方法来访问或修改变量,成员变量一般用private关键字修饰,表明为私有成员,禁止外部直接访问。private关键字是权限修饰符(关于权限修饰符的说明后面的课会介绍),声明成员变量时,如果不添加权限修饰符,默认访问权限是default权限。
成员变量的作用范围为整个类文件,作用范围就是成员变量的有效工作范围,在整个类文件中,成员变量都可以被访问和使用。
例如:
public class Fruits {
//水果类汁液含量属性
private String water;
//水果类糖分含量属性
private String sugar;
//水果类芳香度属性
private String fragrance;
//水果类的构造方法
Fruits(String inwater,String sugar,String fragrance)
{
this.water = inwater;
this.sugar = sugar;
this.fragrance = fragrance;
}
// 水果类的开花行为
public void flower()
{
System.out.println("开花");
}
// 水果类的成熟行为
public void ripe()
{
System.out.println("成熟");
}
// 水果类的落果行为
public void drop ()
{
System.out.println("落果");
}
}Fruits类有三个成员变量,分别是water(汁液含量)、sugar(糖分含量)、fragrance(芳香度),这三个变量被修饰为private,禁止外部访问和修改。外部如果要访问和修改类属性,需要调用类提供的get和set方法,如getWater()方法可以获取water变量的值,setWater(String water)方法可以设置water变量的值,另外两个变量,依次类推。
对于成员变量,Java提供了三种初始化方式。
(1)使用默认值初始化
Java为声明的成员变量提供了默认初始化机制,当声明成员变量时,即使没有显式赋值,Java也会为以下类型的成员变量提供默认值:

(2)使用显式值初始化
声明成员变量的同时,进行赋值。
例如:
public class Circle {
//定义半径属性
private double r = 1.5;
}(3)使用类构造方法初始化
通过类构造方法来初始化成员变量(类构造方法后面介绍)。
类成员变量的get和set方法可以由eclipse自动创建,不需要程序员手动编码。具体方法如下:
(1)用鼠标选择要添加成员变量get和set方法的类,单击鼠标右键,在弹出的菜单项列表中选择【Source】菜单项;
(2)在弹出的【Source】子菜单项列表,选择【Generate Getters and Setters】菜单项;
(3)在弹出的对话框中(如下图所示),选择列出的全部成员变量,单击【Generate】按钮即可。

下面的代码已经添加了类成员变量的get和set方法:
/**
* @Title: Fruits.java
* @Package fruits
* @Description: Java基础知识课程案例
* @author 编程训练营
* @date
* @version V1.0
*/
package fruits;
/**
* @ClassName: Fruits
* @Description: 类和对象(类与类的封装)案例
* @author 编程训练营
* @date
*
*/
public class Fruits {
//水果类汁液含量属性
private String water;
//水果类糖分含量属性
private String sugar;
//水果类芳香度属性
private String fragrance;
//水果类的构造方法
Fruits(String inwater,String sugar,String fragrance)
{
this.water = inwater;
this.sugar = sugar;
this.fragrance = fragrance;
}
// 水果类的开花行为
public void flower()
{
System.out.println("开花");
}
// 水果类的成熟行为
public void ripe()
{
System.out.println("成熟");
}
// 水果类的落果行为
public void drop ()
{
System.out.println("落果");
}
/**
* @return the water
*/
public String getWater() {
return water;
}
/**
* @param water the water to set
*/
public void setWater(String water) {
this.water = water;
}
/**
* @return the sugar
*/
public String getSugar() {
return sugar;
}
/**
* @param sugar the sugar to set
*/
public void setSugar(String sugar) {
this.sugar = sugar;
}
/**
* @return the fragrance
*/
public String getFragrance() {
return fragrance;
}
/**
* @param fragrance the fragrance to set
*/
public void setFragrance(String fragrance) {
this.fragrance = fragrance;
}
}