📅  最后修改于: 2020-11-05 03:12:22             🧑  作者: Mango
Apex中的类方法有两个修饰符-公共或受保护。对于方法,返回类型是必需的,如果方法未返回任何内容,则必须提及void作为返回类型。此外,方法也是必需的。
句法
[public | private | protected | global]
[override]
[static]
return_data_type method_name (input parameters) {
// Method body goes here
}
方括号中提到的那些参数是可选的。但是,以下组件是必不可少的-
使用访问修饰符,可以为类方法指定访问级别。例如,可以从类中和类外部的任何位置访问Public方法。私有方法只能在该类中访问。所有Apex类都可以访问Global,并且可以将其公开为其他顶点类可访问的Web服务方法。
例
//Method definition and body
public static Integer getCalculatedValue () {
//do some calculation
myValue = myValue+10;
return myValue;
}
此方法的返回类型为Integer,并且不带参数。
方法可以具有以下示例中所示的参数-
// Method definition and body, this method takes parameter price which will then be used
// in method.
public static Integer getCalculatedValueViaPrice (Decimal price) {
// do some calculation
myValue = myValue+price;
return myValue;
}
构造函数是从类蓝图创建对象时调用的代码。它具有与类名称相同的名称。
我们不需要为每个类都定义构造函数,因为默认情况下会调用无参数构造函数。构造函数对于变量的初始化或类初始化时要执行的过程很有用。例如,当类被调用时,您希望将某些Integer变量的值分配为0。
例
// Class definition and body
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时,这可能很有用。创建类对象时,将调用构造函数,如下所示-
// Class and constructor has been instantiated
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;
}
}
您可以像在上一个示例中执行的那样执行该类。
// Developer Console Code
MySampleApexClass3 objClass = new MySampleApexClass3();
Double FinalPrice = MySampleApexClass3.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);