Apex - 方法
类方法
Apex 中的类方法有两个修饰符 - Public 或 Protected。 返回类型对于方法来说是强制性的,如果方法没有返回任何内容,那么您必须指定 void 作为返回类型。 另外,方法也需要Body。
语法
[public | private | protected | global]
[override]
[static]
return_data_type method_name (input parameters) {
// Method body goes here
}
语法解释
方括号中提到的参数是可选的。 但是,以下组件是必不可少的 −
- return_data_type
- method_name
类方法的访问修饰符
使用访问修饰符,您可以指定类方法的访问级别。 例如,可以从类中和类外的任何位置访问公共方法。 私有方法只能在类内访问。 Global 将可供所有 Apex 类访问,并且可以公开为其他 Apex 类可访问的 Web 服务方法。
示例
//方法定义和方法体
public static Integer getCalculatedValue () {
//do some calculation
myValue = myValue+10;
return myValue;
}
此方法的返回类型为 Integer,并且不带任何参数。
方法可以具有参数,如以下示例所示 −
// 方法定义和主体,该方法采用参数price,然后在方法中使用该参数。
public static Integer getCalculatedValueViaPrice (Decimal price) {
// do some calculation
myValue = myValue+price;
return myValue;
}
类构造函数
构造函数是从类蓝图创建对象时调用的代码。 它与类名具有相同的名称。
我们不需要为每个类定义构造函数,因为默认情况下会调用无参构造函数。 构造函数对于变量的初始化或在类初始化时完成一个过程非常有用。 例如,您希望在调用类时将某些 Integer 变量的值指定为 0。
示例
// 类定义和主体
public class MySampleApexClass2 {
public static Double myValue; // Class Member variable
public static String myString; // Class Member variable
public MySampleApexClass2 () {
myValue = 100; //initialized variable when class is called
}
public static Double getCalculatedValue () { // Method definition and body
// do some calculation
myValue = myValue+10;
return myValue;
}
public static Double getCalculatedValueViaPrice (Decimal price) {
// Method definition and body
// do some calculation
myValue = myValue+price; // Final Price would be 100+100=200.00
return myValue;
}
}
您也可以通过构造函数调用类的方法。 这在为视觉力控制器编程 Apex 时可能很有用。 创建类对象时,将调用构造函数,如下所示 −
// 类和构造函数已经实例化
MySampleApexClass2 objClass = new MySampleApexClass2();
Double FinalPrice = MySampleApexClass2.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);
重载构造函数
构造函数可以重载,即一个类可以有多个使用不同参数定义的构造函数。
示例
public class MySampleApexClass3 { // Class definition and body
public static Double myValue; // Class Member variable
public static String myString; // Class Member variable
public MySampleApexClass3 () {
myValue = 100; // initialized variable when class is called
System.debug('myValue variable with no Overaloading'+myValue);
}
public MySampleApexClass3 (Integer newPrice) { // Overloaded constructor
myValue = newPrice; // initialized variable when class is called
System.debug('myValue variable with Overaloading'+myValue);
}
public static Double getCalculatedValue () { // Method definition and body
// do some calculation
myValue = myValue+10;
return myValue;
}
public static Double getCalculatedValueViaPrice (Decimal price) {
// Method definition and body
// do some calculation
myValue = myValue+price;
return myValue;
}
}
您可以像我们在前面的示例中执行的那样执行此类。
// 开发者控制台代码
MySampleApexClass3 objClass = new MySampleApexClass3();
Double FinalPrice = MySampleApexClass3.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);

