I would be cautious about changing things such as token name as users (as well as applications/services) may not expect this to change. (Though changing the name isn’t prohibited in the EIP).
I would recommend being clear with users under what circumstances these changes would occur.
Each application/service may handle metadata such as names their own way, so you may need to get the name updated on each application/service.
The code I provided worked in OpenZeppelin 2.x but OpenZeppelin 3.x uses Solidity 0.6 and doesn’t support overriding
There is discussion on making some functions virtual: https://github.com/OpenZeppelin/openzeppelin-contracts/issues/2154
Can you share what your use case is for changing a token name?