Polymorphism is the ability to process data in more than one form. Like any other programming language, Solidity also supports polymorphism. Solidity supports two types of polymorphism, Function Polymorphism, and Contract Polymorphism.
Function Polymorphism
Function Polymorphism is also known as method overloading. In function polymorphism, multiple functions are declared as having the same name within the same contract or inheriting contract. Functions differ on the basis of the number of parameters or parameter datatypes. Declaration of function cannot be overloaded by functions that differ only in return type.
Example: In the below example, the contract methodOverloading defines two functions with the same name but different argument lists to demonstrate function polymorphism.
Solidity
pragma solidity >=0.4.22 <0.9.0;
contract methodOverloading {
function getValue(
string memory _strin) public pure returns(
string memory){
return _strin;
}
function getValue(
uint _num) public pure returns(
uint){
return _num;
}
}
|
Output:
Contract Polymorphism
Contract polymorphism means using multiple contract instances interchangeably when they are related to each other by using inheritance. This helps in calling the child contract functions using the instance of the parent contract.
Example: In the below example, the contract parent is derived by the child contract child, to demonstrate contract polymorphism. ContractPolymorphism is the driver contract.
Solidity
pragma solidity >=0.4.22 <0.9.0;
contract parent{
uint internal sum;
function setValue(
uint _num1, uint _num2) public {
sum = _num1 + _num2;
}
function getValue(
) public view virtual returns(uint) {
return 10;
}
}
contract child is parent{
function getValue(
) public view override returns(uint) {
return sum;
}
}
contract ContractPolymorphism {
parent pc = new child();
function getInput(
uint _num1, uint _num2) public {
pc.setValue(_num1, _num2);
}
function getSum(
) public view returns(uint){
return pc.getValue();
}
}
|
Output:
Last Updated :
20 Feb, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...