// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;
contract ScopingStateVariables {
// Public state variable:
// Accessible from within the contract, derived contracts, and externally.
uint64 public myVarPublic = 0;
// Private state variable:
// Accessible only within this contract, not in derived ones or externally.
uint64 private myVarPrivate = 0;
// Internal state variable:
// Accessible within this contract and in derived contracts, but not externally.
uint64 internal myVarInternal = 0;
// Function to increment the public variable.
// Demonstrates internal access to a public variable.
function incrementPublicVar() public {
myVarPublic++;
}
// Function to increment the private variable.
// Can only be called within this contract.
function incrementPrivateVar() public {
myVarPrivate++;
}
// Function to increment the internal variable.
// Can be called within this contract and derived contracts.
function incrementInternalVar() public {
myVarInternal++;
}
// Function to get the current value of the private variable.
// Private variables do not have auto-generated getter functions,
// so we create a public function to allow external access.
function getPrivateVar() public view returns (uint64) {
return myVarPrivate;
}
// Function to get the current value of the internal variable.
// Like private, internal variables do not have auto-generated getter functions.
// This function allows reading the internal variable's value externally.
function getInternalVar() public view returns (uint64) {
return myVarInternal;
}
}
//Deploy show: