您的位置:首页 > 其它

抽象类vs接口,浅复制Vs深复制

2014-12-26 17:02 357 查看

设计模式中六大原则,是对面向对象编程中“高内聚,低耦合”思想的继承,学习过程中经常容易混淆概念,容易搞乱一些经常出现的名词,下面就对抽象类和接口,深浅复制进行一下区分。

抽象类vs接口

1、 抽象类与接口是面向对象思想层面概念,不是程序设计语言层面概念

2、抽象类是本体的抽象,接口是行为的抽象

抽象类:不能实例化的类。特殊之处在于:包括抽象方法(没有实现码),不能被实例化。可以派生自一个抽象类。

接口:一组方法声明的集合,规定了实现本接口必须履行所有的契约。

概念角度区别:

首先,抽象类是类,接口是集合。

其次,抽象类使用动机是在不允许实例化的限制下复用代码;接口使用动机则是松散对象间耦合,及实现程序多态性。

相同点:

        1.不能实例化

        2.包含没有实现码的方法

        3.派生类必须实现这些方法,抽象类是抽象方法,接口是所有成员(不仅是方法)

区别:

      1.抽象类表示“是一个(is-a)关系的抽象”,接口表示“能(can-do)”关系的抽象。

      2.抽象类是对类的抽象;接口是一个行为规范,证明“我必须做”

      3.一个类可以实现若干接口,但只能集成自一个父类

      4.抽象类不能被密封

      5.好的接口定义要具备专一性功能,否则造成接口污染。(实现的接口方法中有不需要的方法)

      6.抽象类定义类型方法时,可以给出非抽象方法的实现;而接口中的所有方法都要给出实现、

      7.继承类继承抽象类的抽象方法时,可以不用重写,而是沿用抽象类的方法;接口则要求必须给出相应的实现。

 接口好处:不光可以作为引用类型,也可以作为值类型。抽象类,职能作用为引用类型

           通过借口,可以减少类型暴露的属性和方法,便于保护类型对象。

           

浅复制与深复制:

   浅拷贝是数据之间的赋值,把值赋给要拷贝的值。但是如果对象还包含资源(文件,另一个值堆资源),拷贝时,两个对象就有共同资源,同时对资源进行访问就会出项问题。

    深拷贝,用来解决这样问题,把资源也赋值一次,是对象拥有不同资源,但内容是一样的(又在堆栈分配了另一个内存空间),把原来内容拷贝过来。

    如果拷贝对象中引用了外部内容,在拷贝这个对象时候,让心就对象指向同一个外部内容,就是浅拷贝;若拷贝对象时,为新对象制作了独立拷贝,就是深拷贝。

    就是说,如果拷贝对象时,需要拷贝这个对象引用的对象,就是深拷贝,否则是浅拷贝。

总结:对概念的区分,还没有进行到实践阶段,不能真正运用出来,还没能体会到设计模式到底怎样的将面向对象的理论体现出来,只是对一些概念作粗浅的理解区分,在学习中不断总结,慢慢消化。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: