成员变量和成员方法
成员变量
成员变量,也被称为属性或字段(fields),是类的一部分,用于存储关于对象状态的信息。成员变量定义了对象的数据,可以被认为是对象的“属性”或“特征”。
关键特性:
- 命名:成员变量通常使用名词或形容词,以描述它们所代表的数据。
- 作用域:成员变量的作用域是整个类,这意味着类的任何方法都可以访问这些变量。
- 访问级别:成员变量可以有不同的访问级别,如
public
,private
,protected
等。private
成员变量只能在它们所属的类内部访问,而public
成员变量可以在任何地方访问。 - 类型:成员变量具有特定的数据类型,如
int
,double
,String
, 或者是其他类的实例。 - 初始化:成员变量可以在声明时初始化,也可以在构造函数中初始化。
- 封装:面向对象编程鼓励使用封装,这意味着成员变量通常被声明为
private
,并通过公共方法(getter和setter)来访问和修改。 - 生命周期:对象的成员变量的生命周期与对象本身相同,当对象被创建时,成员变量被分配内存,当对象被垃圾回收时,成员变量占用的内存被释放。
以下是一个简单的Java类示例,其中包含了成员变量:
public class Person {
// 声明成员变量
private String name;
private int age;
// 构造函数
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter方法
public String getName() {
return name;
}
// Setter方法
public void setName(String name) {
this.name = name;
}
// 获取年龄的方法
public int getAge() {
return age;
}
// 设置年龄的方法
public void setAge(int age) {
this.age = age;
}
}
成员变量与静态变量区别
- 作用域:
- 成员变量:属于类的每个实例。每个对象都有自己的成员变量副本,不同的对象可以拥有不同的成员变量值。
- 静态变量:属于类本身,而不是类的任何特定实例。无论创建多少个类的实例,静态变量只有一份。
- 生命周期:
- 成员变量:随着对象的创建而分配,随着对象的销毁而释放。
- 静态变量:随着类的加载而分配,随着类的卸载而释放,与任何特定对象的生命周期无关。
- 访问:
- 成员变量:可以通过类的实例访问,也可以通过类直接访问(如果它们是public的)。
- 静态变量:可以通过类直接访问,不需要创建类的实例。
- 使用场景:
- 成员变量:用于存储对象特有的数据,比如一个人的姓名和年龄。
- 静态变量:用于存储类级别的数据,比如一个班级的学生总数。
- 内存分配:
- 成员变量:在堆内存中为每个对象单独分配。
- 静态变量:在栈内存或数据段中分配,所有实例共享。
- 与方法的关系:
- 成员变量:可以被非静态方法访问,这些方法操作特定实例的状态。
- 静态变量:可以被静态方法访问,静态方法不依赖于类的任何特定实例。
- 继承:
- 成员变量:可以被子类继承,每个子类的实例都有自己的成员变量副本。
- 静态变量:由于它们属于类而不是实例,所以不会被子类的实例继承,但可以通过子类访问和修改。
- 示例:
- 成员变量示例:
public class Car { private String color; }
- 静态变量示例:
public class Car { private static int totalCars; }
- 成员变量示例:
以下是Java代码示例,展示如何使用成员变量和静态变量:
public class MyClass {
// 成员变量
private int instanceVar;
// 静态变量
private static int staticVar;
// 成员变量的构造函数
public MyClass(int value) {
this.instanceVar = value;
}
// 静态变量的访问方法
public static int getStaticVar() {
return staticVar;
}
// 静态变量的设置方法
public static void setStaticVar(int value) {
staticVar = value;
}
}
// 使用成员变量
MyClass obj1 = new MyClass(10);
MyClass obj2 = new MyClass(20);
System.out.println(obj1.instanceVar); // 访问obj1的成员变量
System.out.println(obj2.instanceVar); // 访问obj2的成员变量
// 使用静态变量
MyClass.setStaticVar(100);
System.out.println(MyClass.getStaticVar()); // 访问静态变量
成员方法
成员方法是属于类的,可以访问类的成员变量和静态变量。它们是类的一部分,定义了类的行为。
- 定义:成员方法是类定义中的函数,可以访问类的成员变量和调用其他成员方法。
- 访问级别:可以指定为
public
、private
、protected
等,这决定了其他类或对象能否访问该方法。 - 作用域:成员方法的作用域限于类内部,但可以通过类的实例来调用。
- 实例方法:大多数成员方法是实例方法,需要创建类的实例后才能调用。
- 静态方法:有些成员方法是静态的,这意味着它们不需要类的实例就可以调用,并且不能访问非静态成员变量。
- 参数:成员方法可以接收参数,这些参数用于提供方法执行所需的输入数据。
- 返回类型:成员方法可以指定返回类型,表示方法执行完毕后返回的数据类型。如果方法不返回任何值,则返回类型为
void
。 - 重载:类中可以有多个同名的成员方法,只要它们的参数列表不同(参数数量或类型不同),这称为方法重载。
- 重写:在继承体系中,子类可以重写父类的成员方法,提供特定的实现。
- 封装:成员方法通常用于封装对成员变量的操作,隐藏实现细节,提供公共接口。
以下是一个简单的Java类示例,展示了成员方法的使用:
public class Person {
// 成员变量
private String name;
private int age;
// 构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 实例方法:获取姓名
public String getName() {
return name;
}
// 实例方法:设置姓名
public void setName(String name) {
this.name = name;
}
// 实例方法:描述年龄
public void describeAge() {
System.out.println("Age: " + age);
}
// 静态方法:不依赖于类的实例
public static void greet() {
System.out.println("Hello!");
}
}
// 使用成员方法
Person person = new Person("Alice", 30);
person.setName("Bob"); // 调用实例方法
System.out.println(person.getName()); // 调用实例方法
person.describeAge(); // 调用实例方法
// 使用静态方法
Person.greet(); // 调用静态方法,不需要实例
标签:变量,成员,实例,方法,public,name
From: https://www.cnblogs.com/jmy3/p/18344735