// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
//继承,类似php中的class继承并使用里面的方法
contract A {
//因为继承后被外部可以用,所以是public,继承关键词virus
function aa() public pure virtual returns (string memory) {
return "aa";
}
function aa1() external pure virtual returns (string memory){
return "aa1";
}
}
contract B is A{
//因为继承后被外部可以用,所以是public,继承关键词virus
function aa() public pure override returns (string memory) {
return "bb";
}
function aa1() external pure virtual override returns (string memory){
return "bb1";
}
function bb1() external pure returns (string memory){
return "bb1";
}
}
contract C is B {
function aa1() external pure override returns (string memory){
return "cc";
}
function cc() external pure returns (string memory){
return "cc1";
}
}
****************代办事项的需求模拟编写*****************
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
//需求,写一个代办事项的合约
contract tod {
//创建一个结构体,描述我们的代办事件
struct Todo{
string text;
uint256 createdAt; //记录创建时间
address owner; //记录创建人的地址
bool zhuang;
}
//然后创建一个结构体类型的数组,因为不止一个代办事的可能
Todo[] public todos; //todos是结构体数组,里面存储了我们所有的事件
//创建代办事的增删改查方法
function cret(string memory tt,uint256 nn) external {
todos.push(Todo(tt,nn,msg.sender,true)); //向todos数组中添加一个元素
// todos[todos.length] = Todo(tt,now,msg.sender); //向todos数组中添加一个元素
}
//修改状态
function uptodo(uint index , string memory tta) external {
Todo storage todo \= todos[index]; //获取到index下标对应的结构体
todo.text \= "xxxxxx"; //修改text字段
todos[index].text \= tta;
}
//布尔值的状态反转写法
function fanzhuan(uint inde) external {
todos[inde].zhuang \= !todos[inde].zhuang;
}
}
反转写法,常用,!= 则是反转,用于布尔值
todos\[inde\].zhuang \= !todos\[inde\].zhuang;