Logo

郎哥编程

成员变量

2019-12-12 1186

在定义类时,经常需要抽象出它的属性,并定义在类的主体中,在类中定义的属性也称为类的成员变量。

成员变量是抽象出来的类属性,成员变量一般不能直接被外部访问或修改,需要通过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也会为以下类型的成员变量提供默认值:

image.png

(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】按钮即可。

image.png

下面的代码已经添加了类成员变量的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;
    }
}


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论