Solidity构造函数Constructor
注:学习笔记,仅供参考,如有错误,烦请指正
1. 什么是构造函数?
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回void。 构造函数可用于为某些成员变量设置初始值。
维基百科解释
在基于类、面向对象的编程中,构造函数(缩写:ctor)是一种特殊类型的子例程,调用它来创建对象。它准备新对象以供使用,通常接受构造函数用来设置所需成员变量的参数。
构造函数类似于实例方法,但它与方法的不同之处在于它没有显式的返回类型,它不是隐式继承的,而且它通常对范围修饰符有不同的规则。构造函数通常与声明类同名。他们的任务是初始化对象的数据成员并建立类的不变量,如果不变量无效则失败。正确编写的构造函数使生成的对象处于有效状态。不可变对象必须在构造函数中初始化。
大多数语言允许重载构造函数,因为一个类可以有多个构造函数,具有不同的参数。一些语言会考虑一些特殊类型的构造函数。构造函数,具体使用单个类来创建对象并返回该类的新实例,由工厂抽象,工厂也创建对象,但可以使用多个类或不同的分配方案(例如对象池)以各种方式进行。
2. 为什么需要构造函数?
因为一般的创建对象的方式一次只能创建一个对象, 里面很多的属性和方法是大量相同的 我们只能复制
因此我们可以利用函数的方法 重复这些相同的代码 我们就把这个函数称为 构造函数
构造函数︰是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new运算符一起使用。
我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。
构造函数 和 实例对象的区别
构造函数,如Stars(),抽象了对象的公共部分,封装到了函数里面,它泛指某一大类
创建对象,如new Stars(),特指某一个,通过new关键字创建对象的过程我们也称为对象实例化
原文地址:https://www.cnblogs.com/wqddmghsdfh/p/16106562.html
3. 如何使用构造函数?
构造函数的语法格式
function 构造函数名() {
this.属性 = 值;
this.方法 = function() {
}
}
new 构造函数名 ();
Solidity中的构造函数实例
构造函数(constructor)是一种特殊的函数,每个合约可以定义一个,并在部署合约的时候自动运行一次。它可以用来初始化合约的一些参数,例如初始化合约的owner地址:
address owner; // 定义owner变量
// 构造函数
constructor() {
owner = msg.sender; // 在部署合约的时候,将owner设置为部署者的地址
}
Solidity中实现ETH支付(使用构造函数constructor)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
contract Payable{
address payable public owner;
constructor() {
owner = payable(msg.sender);
}
function deposit() external payable {
}
function getBalance() external view returns (uint) {
return address(this).balance;
}
}