Apex - Methoden
Klassenmethoden
Es gibt zwei Modifikatoren für Klassenmethoden in Apex - Public oder Protected. Der Rückgabetyp ist für die Methode obligatorisch. Wenn die Methode nichts zurückgibt, müssen Sie als Rückgabetyp void angeben. Zusätzlich wird Body für die Methode benötigt.
Syntax
[public | private | protected | global]
[override]
[static]
return_data_type method_name (input parameters) {
// Method body goes here
}
Erklärung der Syntax
Die in eckigen Klammern angegebenen Parameter sind optional. Die folgenden Komponenten sind jedoch unerlässlich:
- return_data_type
- method_name
Zugriffsmodifikatoren für Klassenmethoden
Mithilfe von Zugriffsmodifikatoren können Sie die Zugriffsebene für die Klassenmethoden angeben. Zum Beispiel kann von überall in der Klasse und außerhalb der Klasse auf die öffentliche Methode zugegriffen werden. Auf die private Methode kann nur innerhalb der Klasse zugegriffen werden. Global ist für alle Apex-Klassen zugänglich und kann als Webdienstmethode verfügbar gemacht werden, auf die andere Apex-Klassen zugreifen können.
Example
//Method definition and body
public static Integer getCalculatedValue () {
//do some calculation
myValue = myValue+10;
return myValue;
}
Diese Methode hat den Rückgabetyp Integer und akzeptiert keinen Parameter.
Eine Methode kann Parameter haben, wie im folgenden Beispiel gezeigt -
// 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;
}
Klassenkonstruktoren
Ein Konstruktor ist ein Code, der aufgerufen wird, wenn ein Objekt aus dem Klassenplan erstellt wird. Es hat den gleichen Namen wie der Klassenname.
Wir müssen den Konstruktor nicht für jede Klasse definieren, da standardmäßig ein Konstruktor ohne Argumente aufgerufen wird. Konstruktoren sind nützlich für die Initialisierung von Variablen oder wenn ein Prozess zum Zeitpunkt der Klasseninitialisierung ausgeführt werden soll. Beispielsweise möchten Sie bestimmten Integer-Variablen beim Aufruf der Klasse Werte als 0 zuweisen.
Example
// 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;
}
}
Sie können die Methode der Klasse auch über den Konstruktor aufrufen. Dies kann nützlich sein, wenn Sie Apex für Visual Force Controller programmieren. Wenn ein Klassenobjekt erstellt wird, wird der Konstruktor wie unten gezeigt aufgerufen -
// Class and constructor has been instantiated
MySampleApexClass2 objClass = new MySampleApexClass2();
Double FinalPrice = MySampleApexClass2.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);
Konstruktoren überladen
Konstruktoren können überladen sein, dh in einer Klasse können mehr als ein Konstruktor mit unterschiedlichen Parametern definiert sein.
Example
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;
}
}
Sie können diese Klasse so ausführen, wie wir sie im vorherigen Beispiel ausgeführt haben.
// Developer Console Code
MySampleApexClass3 objClass = new MySampleApexClass3();
Double FinalPrice = MySampleApexClass3.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);