contract Father{
uint256 public fatherMoney = 100;
function getFatherName() public pure returns(string memory){
return "KimJung";
}
function getMoney() public view virtual returns(uint256){
return fatherMoney;
}
}
contract Mother{
uint256 public motherMoney = 100;
function getMotherName() public pure returns(string memory){
return "LeeDae";
}
function getMoney() public view virtual returns(uint256){
return motherMoney;
}
}
contract Son is Father, Mother{
function getMoney() public view override(Father, Mother) returns(uint256){
return fatherMoney + motherMoney;
}
}
컨트랙트
- 2개 이상 상속받기 2022.06.25
- functuion String 2022.06.25
- 솔리디티 접근제한자 2022.06.25
- Solidity Function정의 2022.06.25
- Solidity 변수 타입 2022.06.25
2개 이상 상속받기
functuion String
storage
대부분의 변수, 함수들이 저장되며 영속적으로 저장이되어 가스 비용이 비싸다.
※ 영속적이라함은, 스마트컨트랙트를 배포하게되면 해당 정보는 블록체인의 블록에 들어가게 되어 영속적이게 된다.
memory
함수의 파라미터, 리턴값, 레퍼런스 타입이 주로 저장이된다. 그러나 storage처럼 영속적이지 않고 함수 내에서만 유효하기에 보다 적은 가스비용이 발생된다.
Calldata
주로 external function 의 파라미터에서 사용된다.
stack
EVM(Ethereum Virtual Machine)에서 stack data를 관리할때 쓰는 영역이며, 1024MB로 제한적이다.
String
기본 데이터 타입이아닌, 레퍼런스 타입이라 볼 수 있음
※ String은 문자의 배열의 연속
function get_String(string memory _str) public pure returns(string memory){
return _str;
}
function get_uint(uint256 _ui) public pure returns(uint256){
return _ui; //기본 데이터타입은 memory가 디폴트로 사용
}
'솔리디티' 카테고리의 다른 글
오버라이딩 (0) | 2022.06.25 |
---|---|
상속 (0) | 2022.06.25 |
view와 pure (0) | 2022.06.25 |
솔리디티 접근제한자 (0) | 2022.06.25 |
Solidity Function정의 (0) | 2022.06.25 |
솔리디티 접근제한자
public
모든 곳에서 접근가능
contract public_example{
uint256 public a = 3;
function changeA(uint256 _value) publuc {
a = _value;
}
function get_a() view public returns (uint256){
return a;
}
}
contract public_example2{
public_example instance = new public_example();
function changeA_2(uint256 _value) public{
instance.changeA(_value);
}
function use_public_example_a() view public returns (unit256) {
return instance.get_a();
}
}
external
public처럼 모든곳에서 접근 가능하다, external이 정의된 자기자신 컨트랙 내에서 접근 불가 (즉 다른 컨트랙에서 접근 할때)
private
오직 private이 정의된 자기 컨트랙트에서만 가능 (private이 정의된 컨트랙을 상속받은 자식도 불가능)
internal
private 처럼 오직 internal이 정의된 자기 컨트랙에서만 가능하고, internal이 정의된 컨트랙을 상속받은 자식도 사용 가능)
'솔리디티' 카테고리의 다른 글
상속 (0) | 2022.06.25 |
---|---|
functuion String (0) | 2022.06.25 |
view와 pure (0) | 2022.06.25 |
Solidity Function정의 (0) | 2022.06.25 |
Solidity 변수 타입 (0) | 2022.06.25 |
Solidity Function정의
1. 파라미터와 리턴값이 없는 function
uint256 public it = 0;
function sample() public{
it = 10;
}
2. 파라미터는 있고 리턴값이 없는 function
uint256 public it = 0;
function sample(uint256 _value) public{
it = _value;
}
3. 파라미터, 리턴 둘다 있는 function
uint256 public it = 0;
function sample(uint256 _value) public returns(uint256) {
it = _value;
return it;
}
'솔리디티' 카테고리의 다른 글
상속 (0) | 2022.06.25 |
---|---|
functuion String (0) | 2022.06.25 |
view와 pure (0) | 2022.06.25 |
솔리디티 접근제한자 (0) | 2022.06.25 |
Solidity 변수 타입 (0) | 2022.06.25 |
Solidity 변수 타입
## Contract는 타 개발언어의 Class와 동일한 역할.
## 스마트 컨트랙트 별로 Gas비 발생 ( 복잡한 로직일수록 가스비 증가)
1. Data Type
boolean
bool public b1 = !false; // true
bool public b2 = false || true; // true
bool public b3 = false == true; // false
bool public b4 = false && true; // false
bytes
bytes4 public bt2 = 0x12345678; // 1글자당 4비트, 8비트=1바이트
bytes public bt2= "STRING";
address
스마트 컨트랙트 주소
address public addr = "스마트컨트랙트 주소";
uint
//-2^7 ~ 2^7-1
int8 public it = 4; //256이상 시 에러
//0~2^256-1
uint256 public uit = 123211;
'솔리디티' 카테고리의 다른 글
상속 (0) | 2022.06.25 |
---|---|
functuion String (0) | 2022.06.25 |
view와 pure (0) | 2022.06.25 |
솔리디티 접근제한자 (0) | 2022.06.25 |
Solidity Function정의 (0) | 2022.06.25 |