0%

solidity | 继承关键词

讲一下 solidity 的继承。

继承的合约可以访问所有非 private 的成员。

  • external
    • 外部访问
  • public
    • 内外均可访问
  • internal
    • 内部以及继承访问
  • private

is 表示继承,通过复制代码的方式来继承。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
pragma solidity ^0.4.18;

contract A{
function externalHello() external{

}

function internalHello() internal{

}

function privateHello() private{

}

function publicHello() public{

}

}

contract B is A{

function hello() public{
internalHello();
publicHello();
}
}

多重继承

is 后面接多个合约,基类合约在 is 后面的顺序很重要。

继承顺序的原则是底层到派生。

1
2
3
4
5
contract X{}

contract A is X{}

contract B is X,A{}

抽象合约

  • 合约存在没有函数体的函数
  • 合约不能通过编译,只能被继承
1
2
3
contract abstact{
function test();
}

如果合约内,存在没有函数体的函数,则认为是抽象合约,不能编译,只能继承。

接口

  • 所有函数都没有函数体
  • 函数不能继承其他合约,如接口
  • 不能定义构造器、变量、结构体、枚举类
1
2
3
4
5
interface test{
function test();
function test1();
function test2();
}
请我喝杯咖啡吧~