Tiêu đề gốc: "Giới thiệu chủ nghĩa tối giản đoàn kết: 13. Kế thừa Cha và con"
Tác giả gốc: 0xAA
Gần đây tôi đã học lại sự vững chắc, củng cố các chi tiết và còn viết một bài "Giới thiệu về Solidity Minimalist" cho người mới sử dụng (các chuyên gia lập trình cũng có thể thêm một bài Tìm hướng dẫn khác ), được cập nhật 1-3 bài giảng mỗi tuần.
Tất cả các mã và hướng dẫn đều là nguồn mở trên github: github.com/AmazingAng/WTFSolidity p>
Trong bài giảng này chúng tôi giới thiệu về tính kế thừa vững chắc, bao gồm kế thừa đơn giản, kế thừa bội và kế thừa sửa đổi. các công cụ sửa đổi và các hàm tạo.
Kế thừa là một phần quan trọng của lập trình hướng đối tượng và có thể giảm đáng kể mã trùng lặp. Nếu bạn coi hợp đồng là đối tượng thì Solidity cũng là lập trình hướng đối tượng và hỗ trợ tính kế thừa.
virtual: Nếu bạn muốn viết lại hàm trong hợp đồng gốc, bạn cần thêm từ khóa virtual.
override: Hợp đồng con viết lại hàm trong hợp đồng cha và cần thêm khóa ghi đè .
Đầu tiên chúng ta viết một hợp đồng ông nội đơn giản Yeye, trong đó có 1 sự kiện Nhật ký và 3 hàm: hip(), pop(), yeye (), đầu ra là "Yeye".

Chúng ta xác định một hợp đồng cha khác là Baba và để anh ta kế thừa hợp đồng Yeye. Cú pháp là hợp đồng Baba là Yeye, rất trực quan. Trong hợp đồng Baba, chúng ta viết lại 2 hàm hip() và pop(), thêm từ khóa ghi đè và thay đổi đầu ra của chúng thành “Baba”; và thêm một hàm mới baba, và đầu ra cũng là “Baba” ”.

p>
Khi triển khai hợp đồng chúng ta có thể thấy trong hợp đồng Baba có 4 chức năng, trong đó có chức năng hông () và pop Đầu ra của () đã được viết lại thành công thành "Baba", trong khi đầu ra của yeye() được kế thừa vẫn là "Yeye".
Một hợp đồng vững chắc có thể kế thừa nhiều hợp đồng. Quy tắc:
1. Khi thừa kế, việc thừa kế phải được sắp xếp theo thứ tự từ cao nhất đến thấp nhất. thâm niên thấp nhất. Ví dụ: nếu chúng ta viết hợp đồng Erzi và kế thừa hợp đồng Yeye và hợp đồng Baba thì chúng ta phải viết hợp đồng Erzi là Yeye, Baba chứ không phải hợp đồng Erzi là Baba, Yeye, nếu không sẽ báo lỗi.
2. Nếu một hàm tồn tại trong nhiều hợp đồng được kế thừa, chẳng hạn như trong ví dụ Hip() và pop() phải được viết lại trong hợp đồng phụ, nếu không sẽ báo lỗi.
3. Khi viết lại các hàm có cùng tên trong nhiều hợp đồng mẹ, sau từ khóa ghi đè Thêm tên của hợp đồng gốc, chẳng hạn như ghi đè(Yeye, Baba).
Ví dụ:

Chúng ta có thể thấy, Hợp đồng Erzi đã viết lại các hàm hip() và pop(), thay đổi đầu ra thành "Erzi", đồng thời kế thừa các hàm yeye() và baba() từ hợp đồng Yeye và Baba tương ứng.
Các công cụ sửa đổi trong Solidity cũng có thể được kế thừa, cách sử dụng tương tự như kế thừa hàm, chỉ cần thêm từ khóa ảo và ghi đè vào những vị trí tương ứng.
p>
Hợp đồng con có hai phương thức để kế thừa hàm tạo của hợp đồng cha. Để đưa ra một ví dụ đơn giản, hợp đồng cha A có một biến trạng thái a, được xác định bởi các tham số của hàm tạo:

1. Khai báo các tham số của hàm tạo cha trong quá trình kế thừa. Ví dụ: hợp đồng B là A(1)
2. Khai báo các tham số của hàm khởi tạo trong hàm tạo của hợp đồng phụ, ví dụ:

Có hai cách đối với hợp đồng con để gọi hàm của hợp đồng gốc. Gọi trực tiếp. Và sử dụng từ khóa super.
- Gọi trực tiếp: Hợp đồng con có thể sử dụng trực tiếp tên hợp đồng cha. Tên hàm () phương thức Để gọi hàm hợp đồng cha, chẳng hạn như Yeye.pop().

p>
- super từ khóa: Hợp đồng con có thể sử dụng tên hàm siêu () để gọi hàm hợp đồng cha gần nhất. Mối quan hệ kế thừa vững chắc từ phải qua trái khi khai báo là: Contract Erzi là Yeye, Baba thì Baba là Contract cha gần nhất, super.pop() sẽ gọi Baba.pop() thay vì Yeye.pop():  ;  ;

p>
Bài giảng này chúng tôi đã giới thiệu cách sử dụng cơ bản của tính kế thừa vững chắc, bao gồm kế thừa đơn giản, kế thừa đa bội, kế thừa của trình trang trí và hàm tạo cũng như các hàm gọi trong hợp đồng gốc.
Liên kết gốc
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia

