昨天去PWC面试问的一个问题,一起讨论下
java代码复用的3种方式:implelate,extends,类作为属性。在不同情况下,怎么选择该用哪种方法 --------------------编程问答-------------------- implements 原实现类实现方法需要完全颠覆,此时可以重新实现接口,替换原类。(要求以接口方式声明、使用)extends 原实现类部分方法需要变动逻辑,此时可以考虑继承、复写需要修改的方法。
成员属性 新功能需要使用原来的一些方法,此时可以将原类作为新功能实现类的一个成员属性。(此时需要关注两个类组合后的线程安全问题) --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 类作为属性是这个意思么?
--------------------编程问答-------------------- 那要看父类是什么类了,如果是接口就只能实现
public class PWC {
Person per;
ClassObject class1;
}
class Person{
}
class ClassObject{
}
如果是抽象类,就用继承,因为既然定义为抽象类肯定会定义抽象方法,抽象方法必然需要在子类中重写
如果是普通类,用属性和继承都可以 --------------------编程问答-------------------- 个人感觉。如果2个类确实有父子关系则用extends,或者想使用模板方法也可以使用extends。
否则建议使用组合就是类作为属性,这样耦合性低。implelate的话就是实现接口了,即类中申明的类属性最好是定义接口不要直接使用实现类 --------------------编程问答-------------------- is-a,is-like-a or have-a --------------------编程问答-------------------- extends是继承,impletements是接口,java一个类最多只能继承一个,但是可以有多个接口,接口里的所有方法都要重写。这关键看项目需求和要实现的功能,另外就是LZ有时间可以看看这个Java资源库:http://java.itcast.cn/java/video.shtml:
补充:Java , Java相关