You can have methods canDeposit and canWithdraw in your interface. This makes it possible for your ui to adapt, like not showing a window for entering a deposit amount when you can’t deposit. And you can have methods deposit() and withdraw() which assert when you call them when the call isn’t allowed (because that’s a programming error) and do the right thing otherwise. And you can shoot drive-by down voters who don’t actually have any really arguments that they could put into a comment.