组合和继承

组合与继承都允许在新的类中放置子对象,组合是显示的这样做,继承是隐式的做。

组合技术

组合技术实在新类中使用现有的类的功能而非他的接口这种情形。在新类中嵌入某个对象,让其实现需要的功能。但是新类中的用户看到的只是新类所定义的接口,而非嵌入对象的接口。未取得此效果,需要在新类中嵌入一个现有的类,用private修饰。

public class Engine{
    private Person person = new Person();
    public void toCell(){
        person.toSay();
    }
}
class Person{
    void toSay(){
        System.out.println("hello ~~~!");
    }
}

组合技术中,可以看到嵌入了某个对象,使用嵌入的对象的更能达到自己所需的要求,但是这是就是紧紧依赖这个对象了,如果那一天这个对象被改变了,那么我们嵌入这个类,可能会导致一系列严重的后果。

论组合和继承

在面向对象中,生产和使用程序代码最哟可能采用过的方法是直接将数据和方法包装进一个类,并且使用该类中该类的对象,也可以运用组合技术使用现有类中来开发新的类,而继承技术是不使用的,因为,尽管我们强调使用OOP的过程中多次使用继承,但这并不意味要尽量使用继承。相反,应该慎用这项技术,其使用场合仅限于你确信使用该项技术确实有效的情况。到底是使用组合还是继承,最清晰的判断就是,我们是否需要从新类向基类的向上转型,如果需要就用继承,如果不需要就需要使用组合最好。还得问一下我真的需要向上转型吗?

猜你喜欢

转载自blog.csdn.net/lovincc/article/details/77935734
今日推荐