继承
1.普通合约的继承
pragma solidity ^0.4.20;
contract base {
uint internal a;
constructor (uint _a){
}
function privateHello() private{
}
function internalHello() internal {
}
function externalHello() external {
}
function publicHello() public {
}
}
contract Sub is base {
constructor(uint _a) base(_a){
}
function hello() public {
a = 1;
internalHello();
}
}
contract Sub2 is base, Sub { // is后面可以写多个合约,但是先后顺序有讲究的,后面的可以改写前面的,所以要注意顺序
constructor(uint _a) base(_a){
}
function hello() public {
a = 1;
internalHello();
}
}
contract Abstract{
function test() public;
}
2.抽象合约:
2.1合约存在没有函数体(实现)的函数。
2.2合约不能通过编译,只能被继承。
2.3如果派生合约没有实现抽象函数,则该派生合约也将被标记为抽象合约。
普通合约中只要有一个函数没有实现,就是抽象合约
contract Abstract{
function test() public;
}
3.接口interface
3.1要求任何方法都是未实现的
3.2函数不能继承其他合约或接口
3.3不能定义构造器、变量、结构体、枚举
contract Calculator {
function getResult() public view returns(uint);
}
interface ICalculator{
function getResult() public view returns(uint);
}
contract Test is Calculator, ICalculator{
function getResult() public view returns(uint) {
uint a = 1;
uint b = 2;
uint result = a + b;
return result;
}
}
本文详细介绍了智能合约的继承机制,包括普通合约的继承、抽象合约的概念及其特性,以及接口在智能合约中的应用。通过实例展示了如何在合约中实现继承,并解释了接口的限制和作用。同时,探讨了继承顺序和抽象函数的影响,为理解和应用智能合约提供了深入的见解。
988

被折叠的 条评论
为什么被折叠?



