Solidez – Polimorfismo

El polimorfismo es la capacidad de procesar datos en más de una forma. Como cualquier otro lenguaje de programación, Solidity también admite polimorfismo. Solidity admite dos tipos de polimorfismo, polimorfismo de función y polimorfismo de contrato.

Polimorfismo de función

El polimorfismo de funciones también se conoce como sobrecarga de métodos. En el polimorfismo de funciones, se declaran múltiples funciones con el mismo nombre dentro del mismo contrato o contrato hereditario. Las funciones difieren en función del número de parámetros o tipos de datos de parámetros. La declaración de función no puede ser sobrecargada por funciones que difieren solo en el tipo de retorno.

Ejemplo: en el siguiente ejemplo, el método de contratoOverloading define dos funciones con el mismo nombre pero diferentes listas de argumentos para demostrar el polimorfismo de la función.

Solidity

// Solidity program to demonstrate
// Function Polymorphism
pragma solidity ^0.5.0;
  
// Contract definition
contract methodOverloading {
      
    // Function to get value 
    // of the string variable
    function getValue(
      string memory _strin) public pure returns(
      string memory){
        return _strin;
    }
  
    // function to get value of 
    // the unsigned integer variable 
    function getValue(
      uint _num) public pure returns(
      uint){
        return _num;
    }
}

Producción : 
 

Function Polymorphism Example

Contrato de polimorfismo

El polimorfismo de contrato significa usar múltiples instancias de contrato de manera intercambiable cuando están relacionadas entre sí mediante el uso de herencia. Esto ayuda a llamar a las funciones del contrato secundario utilizando la instancia del contrato principal.

Ejemplo: En el siguiente ejemplo, el padre del contrato se deriva del hijo del contrato hijo, para demostrar el polimorfismo del contrato. ContractPolymorphism es el contrato controlador.

Solidity

// Solidity program to demonstrate 
// Contract Polymorphism
pragma solidity >=0.4.22 <0.6.0;  
   
// Contract definition 
contract parent{  
      
    // Internal state variable  
    uint internal sum;  
      
    // Function to set the value of 
    // internal state variable sum  
    function setValue(
      uint _num1, uint _num2) public {  
        sum = _num1 + _num2;
    }  
  
    // Function to return a value 10
    function getValue(
    ) public view returns(uint) {  
        return 10;  
    }  
}  
  
// Defining child contract   
contract child is parent{  
      
    // Function getValue overloaded 
    // to return internal state 
    // variable sum defined in the 
    // parent contract
    function getValue(
    ) public view returns(uint) {  
        return sum;  
    }  
}  
  
// Defining calling contract  
contract ContractPolymorphism {  
      
    // Creating object
    parent pc = new child();   
        
    // Function to set values 
    // of 2 unsigned integers
    function getInput(
      uint _num1, uint _num2) public {  
        pc.setValue(_num1, _num2);  
    } 
  
    // Function to get value of 
    // internal state variable sum 
    function getSum(
    ) public view returns(uint){
        return pc.getValue(); 
    }
}

Producción : 
 

Contract Polymorphism Example

Publicación traducida automáticamente

Artículo escrito por jeeteshgavande30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *