Apex - Métodos

Métodos de aula

Existem dois modificadores para Métodos de Classe no Apex - Público ou Protegido. O tipo de retorno é obrigatório para o método e se o método não retornar nada, você deve mencionar void como o tipo de retorno. Além disso, o corpo também é necessário para o método.

Syntax

[public | private | protected | global]
[override]
[static]

return_data_type method_name (input parameters) {
   // Method body goes here
}

Explicação da sintaxe

Esses parâmetros mencionados entre colchetes são opcionais. No entanto, os seguintes componentes são essenciais -

  • return_data_type
  • method_name

Modificadores de acesso para métodos de classe

Usando modificadores de acesso, você pode especificar o nível de acesso para os métodos de classe. Por exemplo, o método Public estará acessível de qualquer lugar na classe e fora da classe. O método privado estará acessível apenas dentro da classe. Global será acessível por todas as classes Apex e pode ser exposto como método de serviço da web acessível por outras classes Apex.

Example

//Method definition and body
public static Integer getCalculatedValue () {
   
   //do some calculation
   myValue = myValue+10;
   return myValue;
}

Este método tem o tipo de retorno Integer e não leva nenhum parâmetro.

Um método pode ter parâmetros conforme mostrado no exemplo a seguir -

// 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;
}

Construtores de classe

Um construtor é um código que é chamado quando um objeto é criado a partir do blueprint da classe. Ele tem o mesmo nome da classe.

Não precisamos definir o construtor para cada classe, pois por padrão um construtor sem argumento é chamado. Construtores são úteis para inicialização de variáveis ​​ou quando um processo deve ser executado no momento da inicialização da classe. Por exemplo, você gostaria de atribuir valores a certas variáveis ​​inteiras como 0 quando a classe for chamada.

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;
   }
}

Você também pode chamar o método da classe por meio do construtor. Isso pode ser útil ao programar o Apex para o controlador de força visual. Quando o objeto de classe é criado, o construtor é chamado conforme mostrado abaixo -

// Class and constructor has been instantiated
MySampleApexClass2 objClass = new MySampleApexClass2();
Double FinalPrice = MySampleApexClass2.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);

Sobrecarregando Construtores

Os construtores podem estar sobrecarregados, ou seja, uma classe pode ter mais de um construtor definido com parâmetros diferentes.

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;
   }
}

Você pode executar esta classe como fizemos no exemplo anterior.

// Developer Console Code
MySampleApexClass3 objClass = new MySampleApexClass3();
Double FinalPrice = MySampleApexClass3.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);