Other than revoking the grant to PUBLIC and granting access only to those users and/or roles that need it, no.
Well, I'd wager that you could probably purchase and install Data Vault and figure out a way to effectively revoke access to an object that is granted to PUBLIC but that would be a confusing (and expensive) architecture. And it would be a bit like swatting a fly with a hammer in that Data Vault is overkill for this sort of thing.
I just realized we have a LOT of stuff granted to PUBLIC for different reasons. Is there a way to prevent a user from accessing objects who have "wide-open" access to PUBLIC?
If you plan to revoke privileges from PUBLIC you might want to take a look at Pete Finnigan's blog about some of the issues you might have if you revoke privileges from public and issues in keeping those privileges revoked.