继承通过关键字 is 来实现,例如:
pragma solidity ^0.8.0;
contract Person{
string name;
uint age;
}
contract Man is Person{
}
访问权限
1 子类不能访问父类的private的,其他的都可以访问,比如Public internal
2 继承不允许函数或变量重名
重写函数
从 0.6 开始,solidity 引入了 abstract, virtual, override 几个关键字,用于重写函数。
pragma solidity ^0.8.0;
contract Employee {
function getSalary() public pure virtual returns(int){
return 1;
}
}
contract Manager is Employee {
function getSalary() public pure override returns(int){
return 2;
}
}
基类中可以包含没有实现代码的函数,也就是纯虚函数,那么基类必须声明为 abstract。
示例以下:
pragma solidity ^0.8.0;
abstract contract Employee {
function getSalary() public pure virtual returns(int);
}
contract Manager is Employee {
function getSalary() public pure override returns(int){
return 2;
}
}