I have seen in tokens that use the variables decimals and etc as private and create a function to access them, why?
You can find some explanation of visibility in this documentation: https://solidity.readthedocs.io/en/v0.7.4/contracts.html#visibility-and-getters, as for why create a function to access private variables, maybe in order to avoid exposing variables directly, and I think we should ask @abcoathup for a real reason.
(Thanks @Skyge as always for being awesome
)
State variables being private is part of the OpenZeppelin Contracts style guidelines:
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/GUIDELINES.md#solidity-code
The explanation for this can be found in the Release notes:
_From: https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v2.0.0_
All state variables are now
private, which means that derived contracts cannot access them directly, but have to use getters. This is to increase encapsulation, to be able to reason better about the code.
I have a question relating to this, am new to solidity but i have an implementation using ERC721EnumerableUpgradeable.
contract ERC721 is ERC721EnumerableUpgradeable {
}
I receive undeclared value or function when I try using any of the private variables or functions declared in ERC721EnumerableUpgradeable.
Please how do I use the private variables or methods declared in ERC721EnumerableUpgradeable from my new derived contract ERC721