Solidity构造函数和析构函数

构造函数:当方法名字和合约名字相同的时候,这个就是构造函数,构造函数在合约对象创建之后执行的

contract  Person{
    function Peron(){//构造函数Person
        ...
}
}

析构函数:selfdestruct

selfdestruct(msg.sender)//析构函数
pragma  solidity  ^0.4.13;//首先第一个是版本的申明
/*
pragma;版本申明
solidity:开发语言
0.4.13:当前合约的版本,0。4代表的是主版本,.13代表的修复bug的升级版
^代表的是向上兼容的意思,0.4.13`0.4.9可以对我们当前的代码进行编译
*/

//contrace  person类似  class person  extends  contract
contract Person {
  uint  _height;//属性名加下划线,代表的是一种规范,编译代码的时候的一种规范
  uint  _age;//年龄,无符号整形



  //当方法名和合约名相同时就属于构造函数,在创建对象的时候,构造函数会最先被调用
  function   Person() {
    _height=1080;
    _age=20;
    address  _owner;//合约的拥有者
  }

  //标准的形式来写,驼峰的形式来写setHight
  function setHight(uint  height) {
      _height=height;
      _owner=msg.sender;
  }
  //度去_height,如果后面不加上constant的话,那么要调用call方法才可以,如果加上了call方法的话,那么就不需要加上call方法就可以取出来
  function  gteHeight()  constant returns (uint) {//返回的是什么类型,后面不用加什么东西
    return   _height;//return,_height加不加上括号都可以
  }


  function kill()  {//如果后面加上constant的时候,刚创建就会把他销毁掉了
    if (_owner==msg.sender){
        //析构函数
      selfdestruct(msg.sender);//msg代表的是全局,selfsdestruct这个是析构函数
    }
  }

  function  owner()  constant  returns (address) {//返回的是地址的类型
    return   _owner;

  }
}


//每一个合约都有一个地址
//在执行这个合约对象的时候,会先去创建判断这些带constant的方法

 

Solidity在线编辑工具:https://remix.ethereum.org/

从这里可以看到这个合约的详细信息:

合约地址:当合约内容相同的饿时候,那么这个合约地址也是相同的,0x692a70d2e424a56d2c6c27aa97d1a86395877b3a

cost:创建这个合约所消耗的gas,不管创建合约对象或者是执行合约里面的方法的时候都会消耗gas值

ABI:可以去https://www.bejson.com/转化为JOSN的格式

 

posted @ 2019-04-07 02:59  风不再来  阅读(1725)  评论(0编辑  收藏  举报