3.3 类与对象 (参考Classes, Objects, and Interfaces)
类与对象是面向对象编程(OOP)的核心概念。在 Salesforce Apex 中,你可以定义自己的类,创建对象,并在这些对象上调用方法。本章将介绍如何定义和使用类以及如何创建对象。
3.3.1 类的定义与使用
在 Salesforce Apex 中,类是一个自定义数据类型,它用于封装一组相关的属性(字段)和方法(函数)。类定义了对象的结构和行为。以下是如何定义和使用类的基本步骤:
步骤 1:定义一个类
你可以使用关键字 class 来定义一个类,后跟类名。类名应该以字母开头,可以包含字母、数字和下划线,但不能包含空格或特殊字符。例如:
public class MyClass {
// 类的成员变量和方法将在这里定义
}
步骤 2:定义类的成员变量
类的成员变量是类的属性,它们用于存储对象的状态信息。成员变量在类内部声明,可以具有不同的数据类型,包括整数、字符串、布尔值等。例如:
public class MyClass {
// 成员变量的声明
public String name;
public Integer age;
}
步骤 3:定义类的方法
类的方法是类的行为,它们用于执行特定的操作。方法在类内部声明,并且可以访问类的成员变量。例如:
public class MyClass {
// 成员变量的声明
public String name;
public Integer age;
// 方法的定义
public void displayInfo() {
System.debug('Name: ' + name);
System.debug('Age: ' + age);
}
}
步骤 4:创建类的对象
一旦类被定义,你可以创建类的对象,这些对象将拥有类定义的属性和方法。例如:
MyClass obj = new MyClass(); // 创建一个 MyClass 对象
obj.name = 'John'; // 设置对象的成员变量值
obj.age = 30;
3.3.2 构造函数与方法
构造函数和方法是类的重要组成部分,它们用于初始化对象和执行操作。在 Salesforce Apex 中,你可以自定义构造函数和方法,以满足特定的需求。
3.3.2.1 构造函数
构造函数是一种特殊的方法,用于在创建对象时执行初始化操作。每个类可以有一个或多个构造函数,用于不同的初始化情况。以下是如何定义构造函数的示例:
public class MyClass {
public String name;
public Integer age;
// 默认构造函数
public MyClass() {
name = 'Unknown';
age = 0;
}
// 带参数的构造函数
public MyClass(String n, Integer a) {
name = n;
age = a;
}
}
在上面的示例中,我们定义了两个构造函数:一个是默认构造函数,另一个是带参数的构造函数。默认构造函数在创建对象时将 name 和 age 初始化为默认值,而带参数的构造函数允许你在创建对象时传递参数来初始化属性。
3.3.2.2 方法
方法是类的行为,它们用于执行特定的操作。在类内部声明方法,并可以在对象上调用它们。以下是如何定义方法的示例:
public class MyClass {
public String name;
public Integer age;
// 构造函数
public MyClass(String n, Integer a) {
name = n;
age = a;
}
// 显示信息的方法
public void displayInfo() {
System.debug('Name: ' + name);
System.debug('Age: ' + age);
}
// 更改姓名的方法
public void changeName(String newName) {
name = newName;
}
}
在上面的示例中,我们定义了两个方法:displayInfo 方法用于显示对象的信息,changeName 方法用于更改对象的姓名。你可以通过对象调用这些方法来执行相应的操作。
3.3.3 静态方法与实例方法
在 Salesforce Apex 中,方法可以分为两种主要类型:静态方法和实例方法。它们具有不同的调用方式和用途。
3.3.3.1 实例方法
实例方法是与对象实例相关联的方法。它们必须通过类的对象来调用,因为它们依赖于对象的状态。以下是一个示例:
public class MyClass {
public String name;
public MyClass(String n) {
name = n;
}
public void greet() {
System.debug('Hello, ' + name + '!');
}
}
在上面的示例中,greet 方法是一个实例方法,它使用对象的 name 属性来打招呼。要调用这个方法,你需要首先创建一个类的对象,然后使用该对象来调用 greet 方法:
MyClass obj = new MyClass('Alice');
obj.greet(); // 输出 "Hello, Alice!"
3.3.3.2 静态方法
静态方法与类本身相关联,而不是与对象实例相关。它们可以直接通过类名来调用,而不需要创建类的对象。以下是一个示例:
public class MyMath {
public static Integer add(Integer a, Integer b) {
return a + b;
}
}
在上面的示例中,add 方法是一个静态方法,它接受两个整数作为参数并返回它们的和。要调用这个方法,你可以直接使用类名:
Integer result = MyMath.add(5, 3);
System.debug('Result: ' + result); // 输出 "Result: 8"
静态方法通常用于执行与类相关的操作,而不依赖于对象的状态。它们在不需要创建对象实例的情况下提供了一种方便的方式来执行特定的功能。