How Does Java Implement Abstraction