Super关键字的作用


#1

super关键字在solidity中有什么作用?我发现网上对这个关键词的讲述比较少。


#2

solidity中的super 允许调用当前合约的父合约。

pragma solidity ^0.4.5;

contract C {
  uint u;
  function f() {
    u = 1;
  }
}

contract B is C {
  function f() {
    u = 2;
  }
}

contract A is B {
  function f() {  // 把U 设置为3
    u = 3;
  }
  function f1() { // 把U 设置为2
    super.f();
  }
  function f2() { // 把U 设置为2
    B.f();
  }
  function f3() { // 把U 设置为1
    C.f();
  }
}

#3

意思是调用父合约的某个方法,子合约可能继承了父合约并覆盖了某个方法,这时想要调用父合约的这个方法就需要使用super关键字。


#4

super用于继承,不仅会调用该函数,还会调用父合约中相应的函数。


#5

和python、js中一样,super用于派生类的继承,加了super表示还会调用父合约的函数