校招实习岗,面试官问,抽象类和接口有什么区别?概念上的?
我当时没答好,结束后就在网上找资料看。大概有了如下的想法:
抽象类是对概念的抽象,在设计或者说投入使用后是 is a。而接口是对行为的抽象,投入使用时更像是 has a 或者说 is like a。
从这个角度来看,我们使用的具体的 java 类库的实现类,比如 ArrayList,HashSet 都是 is a List, is a Set。“集合”,“列表” 这种名词性质的定义,看上去也更像是对概念的抽象而非对行为的抽象。因此才有了题中的想法。
我当时没答好,结束后就在网上找资料看。大概有了如下的想法:
抽象类是对概念的抽象,在设计或者说投入使用后是 is a。而接口是对行为的抽象,投入使用时更像是 has a 或者说 is like a。
从这个角度来看,我们使用的具体的 java 类库的实现类,比如 ArrayList,HashSet 都是 is a List, is a Set。“集合”,“列表” 这种名词性质的定义,看上去也更像是对概念的抽象而非对行为的抽象。因此才有了题中的想法。