首页 > 其他分享 >成员变量和成员方法

成员变量和成员方法

时间:2024-08-06 11:10:18浏览次数:14  
标签:变量 成员 实例 方法 public name

成员变量和成员方法

成员变量

成员变量,也被称为属性或字段(fields),是类的一部分,用于存储关于对象状态的信息。成员变量定义了对象的数据,可以被认为是对象的“属性”或“特征”。

关键特性:

  1. 命名:成员变量通常使用名词或形容词,以描述它们所代表的数据。
  2. 作用域:成员变量的作用域是整个类,这意味着类的任何方法都可以访问这些变量。
  3. 访问级别:成员变量可以有不同的访问级别,如public, private, protected等。private成员变量只能在它们所属的类内部访问,而public成员变量可以在任何地方访问。
  4. 类型:成员变量具有特定的数据类型,如int, double, String, 或者是其他类的实例。
  5. 初始化:成员变量可以在声明时初始化,也可以在构造函数中初始化。
  6. 封装:面向对象编程鼓励使用封装,这意味着成员变量通常被声明为private,并通过公共方法(getter和setter)来访问和修改。
  7. 生命周期:对象的成员变量的生命周期与对象本身相同,当对象被创建时,成员变量被分配内存,当对象被垃圾回收时,成员变量占用的内存被释放。

以下是一个简单的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;
    }

}

成员变量与静态变量区别

  1. 作用域
    • 成员变量:属于类的每个实例。每个对象都有自己的成员变量副本,不同的对象可以拥有不同的成员变量值。
    • 静态变量:属于类本身,而不是类的任何特定实例。无论创建多少个类的实例,静态变量只有一份。
  2. 生命周期
    • 成员变量:随着对象的创建而分配,随着对象的销毁而释放。
    • 静态变量:随着类的加载而分配,随着类的卸载而释放,与任何特定对象的生命周期无关。
  3. 访问
    • 成员变量:可以通过类的实例访问,也可以通过类直接访问(如果它们是public的)。
    • 静态变量:可以通过类直接访问,不需要创建类的实例。
  4. 使用场景
    • 成员变量:用于存储对象特有的数据,比如一个人的姓名和年龄。
    • 静态变量:用于存储类级别的数据,比如一个班级的学生总数。
  5. 内存分配
    • 成员变量:在堆内存中为每个对象单独分配。
    • 静态变量:在栈内存或数据段中分配,所有实例共享。
  6. 与方法的关系
    • 成员变量:可以被非静态方法访问,这些方法操作特定实例的状态。
    • 静态变量:可以被静态方法访问,静态方法不依赖于类的任何特定实例。
  7. 继承
    • 成员变量:可以被子类继承,每个子类的实例都有自己的成员变量副本。
    • 静态变量:由于它们属于类而不是实例,所以不会被子类的实例继承,但可以通过子类访问和修改。
  8. 示例
    • 成员变量示例: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()); // 访问静态变量

成员方法

成员方法是属于类的,可以访问类的成员变量和静态变量。它们是类的一部分,定义了类的行为。

  1. 定义:成员方法是类定义中的函数,可以访问类的成员变量和调用其他成员方法。
  2. 访问级别:可以指定为publicprivateprotected等,这决定了其他类或对象能否访问该方法。
  3. 作用域:成员方法的作用域限于类内部,但可以通过类的实例来调用。
  4. 实例方法:大多数成员方法是实例方法,需要创建类的实例后才能调用。
  5. 静态方法:有些成员方法是静态的,这意味着它们不需要类的实例就可以调用,并且不能访问非静态成员变量。
  6. 参数:成员方法可以接收参数,这些参数用于提供方法执行所需的输入数据。
  7. 返回类型:成员方法可以指定返回类型,表示方法执行完毕后返回的数据类型。如果方法不返回任何值,则返回类型为void
  8. 重载:类中可以有多个同名的成员方法,只要它们的参数列表不同(参数数量或类型不同),这称为方法重载。
  9. 重写:在继承体系中,子类可以重写父类的成员方法,提供特定的实现。
  10. 封装:成员方法通常用于封装对成员变量的操作,隐藏实现细节,提供公共接口。

以下是一个简单的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

相关文章

  • (已解决)QT4 自定义信号函数调用报错 error: C2248: “Boss::DeadSignal”: 无法访问 pr
     (解决方法见文章末尾)报错语句如下 DeadSignal是自定义槽函数,是放在public下的,不知道为什么报错说是protected,不知道是不是版本问题Boss类和DeadSignal定义如下 mboss是在自定义类Widget中调用的Boss对象 调用位置是Widget的自定义槽函数 解决方法在Boss中定......
  • 面向对象--方法
    目录1.方法的好处2.方法的定义和调用3.方法之间的关系4.方法里面的参数5.注意6.方法重载7.方法的局部变量1.方法的好处简化代码,提高代码复用性,一次编写多次调用2.方法的定义和调用一段具有独立功能的代码块,需要先定义才能调用方法定义格式:publicstaticvoidmain方法名(){......
  • 如何使用最佳方法在没有Outlook的情况下查看/打开PST文件
    在本文中,您可以学习如何使用DIY方法通过简单的步骤在没有Outlook的情况下打开PST文件。有一些简单的方法可以打开PST文件和详细查看PST文件的电子邮件,本文中给出了这些方法。我们将学习使用C、Java和PST查看器实用程序打开PST文件,而无需安装Outlook应用程......
  • 深度学习中归一化的方法
    深度学习中常用的归一化方法有:最大最小归一化(Min-MaxScaling)、Z-score归一化(Standardization)、小数定标归一化(DecimalScaling)、批量归一化(BatchNormalization,BN)、层归一化(LayerNormalization,LN)、实例归一化(InstanceNormalization,IN)和组归一化(GroupNormalization,GN)。最......
  • JAVA变量类型
    一个类可以包含以下类型变量:局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法......
  • 数组的复制方法
    arraycopy方法(将元素复制)这句代码使用了System.arraycopy方法,用于将一个数组中的元素复制到另一个数组中。具体来说,这句代码的作用是从原数组arr中删除第一个元素和最后一个元素,并将剩下的元素复制到新数组newArr中。以下是对这句代码的详细解释:System.arraycopy(arr,1,......
  • Profibus转EtherCAT协议转换网关(通讯配置方法)
    如何实现Profibus网络和EtherCAT网络的连接互通?不少朋友对此存有疑问,作者在此统一作出回复。实际上,捷米特JM-DPM-ECT这款设备能够有效地解决这一问题。接下来,作者将为大家详尽地介绍该设备的功能、参数以及配置方式。一,设备主要功能捷米特JM-DPM-ECT是自主研发的一款Profibu......
  • Profibus PA转Modbus rtu/485协议转换网关(通讯配置方法)
    如何实现ProfibusPA网络和EModbusrtu/485网络的连接互通?不少朋友对此存有疑问,作者在此统一作出回复。实际上,捷米特JM-RTU-PA这款设备能够有效地解决这一问题。接下来,作者将为大家详尽地介绍该设备的功能、参数以及配置方式。一、产品概述捷米特JM-RTU-PA是可以将Profibus......
  • CANopen从站转Profinet从站协议转换网关(通讯配置方法)
    如何实现CANopen网络和Profinet网络的连接互通?不少朋友对此存有疑问,作者在此统一作出回复。实际上,捷米特JM-PN-COP这款设备能够有效地解决这一问题。接下来,作者将为大家详尽地介绍该设备的功能、参数以及配置方式。一、功能概述1.1设备简介捷米特JM-PN-COP是PN(Profinet)......
  • Profibus主站转EtherCAT协议转换网关(通讯配置方法)
    如何实现Profibus网络和EtherCAT网络的连接互通?不少朋友对此存有疑问,作者在此统一作出回复。实际上,捷米特JM-DPM-ECT这款设备能够有效地解决这一问题。接下来,作者将为大家详尽地介绍该设备的功能、参数以及配置方式。一,产品主要功能捷米特JM-DPM-ECT是自主研发的一款Profibu......