# JAVA学习solidity智能合约1

By [想住大房子的java程序员](https://paragraph.com/@java-3) · 2022-10-10

---

### 函数修饰符

1.`private` 意味着它只能被合约内部调用；

2.`internal` 就像 `private` 但是也能被继承的合约调用；类似于java的protected。

3.`external` 只能从合约外部调用；

4.`public` 可以在任何地方调用，不管是内部还是外部。

### 状态修饰符

1.`view` 告诉我们运行这个函数不会更改和保存任何数据；

2.`pure` 告诉我们这个函数不但不会往区块链写数据，它甚至不从区块链读取数据；（这两种在被从合约外部调用的时候都不花费任何gas，但是它们在被内部其他函数调用的时候将会耗费gas）

3.modifiers 自定义限定符。function test() external view onlyOwner {}

4.`payable` 一种可以接收以太的特殊函数。function buySomething() external payable {}

---

*Originally published on [想住大房子的java程序员](https://paragraph.com/@java-3/java-solidity-1)*
