Contracts inherit with `is`. A function meant to be replaced is `virtual`; the replacement is marked `override` and may call `super.f()` to run the parent implementation.
contract Base {
function fee() public view virtual returns (uint256) { return 1; }
}
contract Child is Base {
function fee() public view override returns (uint256) { return super.fee() + 1; }
}With multiple inheritance, the linearisation runs right to left in the `is` list.