今天来聊聊关於 contracts 的继承
关於 contracts 其实它是支援多重继承,在这方面上是跟 python 是一样的,它是透过关键字 is
来选择要继承的对象。我们看看下面的范例
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
// 这是父层的合约
contract A {
function Name() public pure virtual returns (string memory) {
return "A";
}
}
//透过 is 的关键字 B 继承 A ,然後透过 ovverride 复写 Name()
contract B is A {
function Name() public pure virtual override returns (string memory) {
return "B";
}
}
//跟上面一样 复写 Name()
contract C is A {
function Name() public pure virtual override returns (string memory) {
return "C";
}
}
// 这个合约继承 B 跟 C ,但合约继承会从右边为继承,所以它的 override里面的对象,会针对c 也就是它的 super 层会回覆 c
contract D is B, C {
//会回覆"C"
function Name() public pure override(B, C) returns (string memory) {
return super.foo();
}
}
再来我们聊聊抽象合约,其实 solidity,有一个抽象合约的规格,我们看看下面范例
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
// 这是抽象合约
abstract contract A {
function Name() public pure virtual returns (string memory);
}
contract B is A {
function Name() public pure override returns (string memory) {
return "B";
}
}
既然有 abstruct ,那就一定有 interface ,明天我们就来聊聊 interface。
<<: EP09 - 建立 Django 专案和 EC2 环境 并手动部署到 EC2
上一篇我们学到怎麽使用Vim,还有修改commit message,这次要做的事情呢,就是要来合并跟...
虽然想把这些敏捷有关的精神导入团队中,但自己仍不愿意对外说在执行敏捷的流程。其中一个最大的差异,是在...
资料库中的一对多如何在 django实现呢 先在app models.py 创建ClassRoom ...
继上一篇的DAY8: process.nextTick(),今天要介绍新方法并相互比较。 setIm...
Blue Prism拯救贫穷大作战第一弹-汇入MS Excel VBO 近期与之前工作的同事於lin...