# Solidity笔记

By [Chris Gao](https://paragraph.com/@sec-dao) · 2022-05-16

---

### Contract类的几种类型

*   Contract： 正常可部署的合约
    
*   Abstract Contract： 存在部分未实现的方法
    
*   Interface： 所有方法均无实现
    
*   Library：库，封装常用的工具类和方法，不能对状态变量和存储进行更改
    
*   Modifier：类似拦截器，AOP编程；定义一个modifier可以修辞某方法
    

### 变量关键字

*   payable：可接受付款的地址变量
    
*   memory：动态内存，不会被存储，使用完后被EVM回收
    
*   public：外部可访问
    
*   private：内部可访问
    

### 函数可见性

*   `public`: 内部外部均可见
    
*   `private`: 只有当前合约内部可见
    
*   `external`: 供外部调用，内部调用使用this关键字
    
*   `internal`: 只有内部可见，可以被继承
    
*   virtual：子类继承实现，实现方法需加override关键字
    
*   payable：可接受付款的方法
    

### 修饰符

*   `pure` for functions: 禁止对状态变量的访问和修改
    
*   `view` for functions: 禁止修改状态变量，但可以修改
    
*   `payable` for functions: 可接受付款
    
*   `constant` for state variables: 常量
    
*   `immutable` for state variables: Allows exactly one assignment at construction time and is constant afterwards. Is stored in code.
    
*   `anonymous` for events: 不作为主题存储及用于检索
    
*   `indexed` for event parameters: 将参数作为主题存储，可用于检索
    
*   `virtual` for functions and modifiers: 子类可重写覆盖
    
*   `override`: 重写父类方法时标记

---

*Originally published on [Chris Gao](https://paragraph.com/@sec-dao/solidity)*
