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 :
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 :
Publicación traducida automáticamente
Artículo escrito por jeeteshgavande30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA