Because functions in smart contracts are at the heart of any operation which is performed in the Ethereum network, this 14-video course covers different ways to define functions depending on their use case. Explore function arguments, return types, and access modifiers, before delving into object-oriented concepts: function polymorphism, abstract contracts, how to override functions in derived contracts, inheritance, and different visibility levels: private, internal, external, and public (default). Demonstration models provide a realistic idea of how a function’s visibility affects where it can be invoked from; a private variable defined within one smart contract can still be accessed from another contract, as long as its getter function is accessible. As you progress through this course, you will gain a fuller understanding of coding smart contracts by using Solidity for your Blockchain solutions. You will know the types of operations which can incur a gas cost and how these can be limited with access modifiers. You will also learn how to define and use abstract contracts while controlling access to your functions by using the four visibility levels.