java中组合和继承的区别