Hi @seybastiens,
Q1
That’s correct
But this part isn’t … "“the contract that is derived” is the derived contract (child contract).
But, I can see from your answer to Q3 that you already know this, so I think this may just be a slight confusion over how the verb “derive” and the adjective “derived” are used in English.
Q2
Correct … although I think it’s clearer if we say, “External functions can be inherited too” … instead of derived.
Q3
I think that what you’ve described here is multi-level inheritance …
contract A { ... }
contract B is A { ... }
/* B is a child/derived contract of A (...derived/inherited from A)
AND
B is also a parent/base contract to C
*/
contract C is B { ... }
Hierarchical inheritance is where more than one (multiple) child contracts are derived from the same, single parent contract.
contract A { ... }
contract B is A { ... }
contract C is A { ... }
contract D is A { ... }
The opposite of hierarchical inheritance is multiple inheritance, which is where more than one (multiple) parent contracts are inherited by the same, single child contract.
contract A { ... }
contract B { ... }
contract C { ... }
contract D is A, B, C { ... }
Let me know if you have any questions