mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Update documentation for interface inheritance
This commit is contained in:
parent
f492a0a3ef
commit
86145adac8
@ -8,7 +8,7 @@ Interfaces
|
|||||||
|
|
||||||
Interfaces are similar to abstract contracts, but they cannot have any functions implemented. There are further restrictions:
|
Interfaces are similar to abstract contracts, but they cannot have any functions implemented. There are further restrictions:
|
||||||
|
|
||||||
- They cannot inherit other contracts or interfaces.
|
- They cannot inherit from other contracts, but they can inherit from other interfaces.
|
||||||
- All declared functions must be external.
|
- All declared functions must be external.
|
||||||
- They cannot declare a constructor.
|
- They cannot declare a constructor.
|
||||||
- They cannot declare state variables.
|
- They cannot declare state variables.
|
||||||
@ -37,10 +37,31 @@ they can be overridden. This does not automatically mean that an overriding func
|
|||||||
can be overridden again - this is only possible if the overriding
|
can be overridden again - this is only possible if the overriding
|
||||||
function is marked ``virtual``.
|
function is marked ``virtual``.
|
||||||
|
|
||||||
|
Interfaces can inherit from other interfaces. This has the same rules as normal
|
||||||
|
inheritance.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
pragma solidity >0.6.1 <0.7.0;
|
||||||
|
|
||||||
|
interface ParentA {
|
||||||
|
function test() external returns (uint256);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ParentB {
|
||||||
|
function test() external returns (uint256);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface SubInterface is ParentA, ParentB {
|
||||||
|
// Must redefine test in order to assert that the parent
|
||||||
|
// meanings are compatible.
|
||||||
|
function test() external override(ParentA, ParentB) returns (uint256);
|
||||||
|
}
|
||||||
|
|
||||||
Types defined inside interfaces and other contract-like structures
|
Types defined inside interfaces and other contract-like structures
|
||||||
can be accessed from other contracts: ``Token.TokenType`` or ``Token.Coin``.
|
can be accessed from other contracts: ``Token.TokenType`` or ``Token.Coin``.
|
||||||
|
|
||||||
.. warning:
|
.. warning:
|
||||||
|
|
||||||
Interfaces have supported ``enum`` types since :doc:`Solidity version 0.5.0 <050-breaking-changes>`, make
|
Interfaces have supported ``enum`` types since :doc:`Solidity version 0.5.0 <050-breaking-changes>`, make
|
||||||
sure the pragma version specifies this version as a minimum.
|
sure the pragma version specifies this version as a minimum.
|
||||||
|
Loading…
Reference in New Issue
Block a user