Sự vững chắc - Sự kế thừa
Kế thừa là một cách để mở rộng chức năng của hợp đồng. Solidity hỗ trợ cả đơn cũng như đa kế thừa. Sau đây là các danh sách cao chính.
Một hợp đồng dẫn xuất có thể truy cập tất cả các thành viên không phải private bao gồm các phương thức nội bộ và các biến trạng thái. Nhưng không được phép sử dụng điều này.
Ghi đè hàm được cho phép với điều kiện chữ ký hàm vẫn giữ nguyên. Trong trường hợp có sự khác biệt của các tham số đầu ra, quá trình biên dịch sẽ không thành công.
Chúng ta có thể gọi hàm siêu hợp đồng bằng cách sử dụng từ khóa super hoặc sử dụng tên siêu hợp đồng.
Trong trường hợp đa kế thừa, việc gọi hàm sử dụng super ưu tiên cho hầu hết các hợp đồng dẫn xuất.
Thí dụ
pragma solidity ^0.5.0;
contract C {
//private state variable
uint private data;
//public state variable
uint public info;
//constructor
constructor() public {
info = 10;
}
//private function
function increment(uint a) private pure returns(uint) { return a + 1; }
//public function
function updateData(uint a) public { data = a; }
function getData() public view returns(uint) { return data; }
function compute(uint a, uint b) internal pure returns (uint) { return a + b; }
}
//Derived Contract
contract E is C {
uint private result;
C private c;
constructor() public {
c = new C();
}
function getComputedResult() public {
result = compute(3, 5);
}
function getResult() public view returns(uint) { return result; }
function getData() public view returns(uint) { return c.info(); }
}
Chạy chương trình trên bằng các bước được cung cấp trong chương Ứng dụng đầu tiên của Solidity . Chạy nhiều phương pháp Hợp đồng. Đối với E.getComputedResult () theo sau là E.getResult () hiển thị -
Đầu ra
0: uint256: 8