1. 什么是Java成员变量
在Java中,成员变量(Member Variables)也被成为实例变量(Instance Variables),是在类中定义的变量,在对象实例化之后被创建。成员变量通常被定义为private或protected以保护数据,只能通过getter和setter方法进行访问和修改。
1.1 成员变量的定义
在Java类中,成员变量通常在类头部定义。例如:
public class MyClass{
private int age;
protected String name;
public boolean gender;
}
上述代码中,定义了三个成员变量:私有变量age,保护变量name和公共变量gender。
1.2 成员变量的作用
成员变量在类中的作用非常重要,它们可以保存在类中的数据,并且可以在类的方法中被调用和操作。定义成员变量的好处是可以在不同的方法中共享这些数据,而不必担心数据的丢失。此外,成员变量的定义使得程序更易读,更易于维护。
1.3 成员变量与局部变量的区别
在Java中,局部变量是在方法中定义的变量,只在方法体内部有效。成员变量则是在类中定义的变量,可以被整个类中的所有方法所访问。
局部变量与成员变量的主要区别在于,局部变量只有在方法执行期间才会占用内存空间,而成员变量在整个对象的生命周期内都存在。
2. 类的访问控制符
在Java中,类的访问控制符可以分为四种,分别是:
public:修饰的类可以被所有的类访问。
protected:修饰的类可以被包内的其他类访问,也可以被同一个包内的子类访问。
default:修饰的类只能被同一个包内的其他类访问。
private:修饰的类只能被本类访问。
3. 成员变量的访问控制符
成员变量也可以有访问控制符,它们控制着成员变量的访问范围。
3.1 private访问控制符
使用private访问控制符可以使得成员变量只能在类内部被访问。这通常用于保护数据,避免数据被类的外部修改。
public class MyClass{
private int age;
public void setAge(int age){
if(age < 0){
System.out.println("年龄不能为负数");
} else {
this.age = age;
}
}
public int getAge(){
return age;
}
}
上述代码中,将年龄变量设置为private访问控制符,只能通过setAge和getAge方法进行访问和修改。这可以保护数据,避免数据被不恰当地修改。
3.2 protected访问控制符
使用protected访问控制符可以使得成员变量对同一个包内的其他类和该类的子类可见。
public class Person{
protected String name;
protected int age;
}
public class Teacher extends Person{
public void show(){
System.out.println("姓名:" + name + ",年龄:" + age);
}
}
上述代码中,Teacher类继承了Person类,并利用protected访问控制符让子类Teacher可以访问和修改父类Person的成员变量name和age。
3.3 public访问控制符
使用public访问控制符可以使得成员变量对所有类可见。这常用于多个类之间需要共享的数据。
public class Student{
public String name;
public int score;
}
public class Teacher{
public void show(Student stu){
System.out.println("学生姓名:" + stu.name + ",学生成绩:" + stu.score);
}
}
上述代码中,成员变量name和score使用public访问控制符,Teacher类可以访问Student类的成员变量,从而打印出学生的姓名和成绩。
4. 接口与成员变量
在Java中,接口(Interface)是一种完全抽象的类,它只包含常量和抽象方法的定义,不包含任何实现。
在接口中,所有定义的变量都是常量,通常被定义为public、static和final。这意味着它们可以被任何类所访问,并且只能被赋值一次。
与成员变量不同的是,接口中定义的常量是公共常量,必须给出一个初始值。例如:
public interface Constants{
public static final int MAX_THREADS = 10;
public static final String DATABASE_NAME = "mydb";
}
5. 总结
Java中的成员变量是类的重要组成部分,它们可以保存在类中的数据,并且可以在类的方法中被调用和操作。成员变量的定义使得程序更易读,更易于维护。访问控制符可以限制成员变量的访问范围。
需要注意的是,成员变量和局部变量是不同的,局部变量只在方法执行期间才会占用内存空间,而成员变量在整个对象的生命周期内都存在。
如果需要定义常量,可以将它们定义在接口中,由于接口中定义的变量都是常量,通常被定义为public、static和final。