What I understood from this is that if a function has virtual keyword, it can be overridden. And if a function has the keyword override means it is overriding another function. So, does the function below means it is overriding the function _burn and at the same time allowing itself to be overridden?
function burn(uint256 tokenId) public override virtual {
_burn(tokenId);
}