zoukankan      html  css  js  c++  java
  • 面向对象——(9)封装和接口

          封装:

          每个对象都包含它能进行操作所需要的所有信息,这个特性叫封装,因此对象不必依赖其他对象来完成自己的操作。

         它有两重含义:

            第一,它把对象的属性和服务结合成一个独立的系统单位(即对象);第二,“信息隐蔽”,即尽可能隐蔽对象的内部细节,对外形成一个屏障或边界,只保留有限的对外接口使之与外部发生关系。举个简单的小例子,比如电视机,我们只要明白如何打开、关闭,调节音量、频道等简单的操作即可,并不需要了解其内部复杂的构造。还有比如遥控器等,它内部的构造就形成了一个独立的整体,而这个整体对外则是“信息隐蔽”的。作为用户,不了解其内部情况就可以方便使用。

     

           在面向对象的程序设计中,对象是一种自治、封装的实体。通过定义对象属性和行为的可见性,可决定哪些是对外可见的,哪些是隐藏在对象内部的。一般而言,对象的属性和行为都是私有的、不能被外界访问的,而对象的所有公有成员函数形成该对象的对外的接口,对象之间通过接口进行消息传递。


      封装有哪些好处?

    良好的封装能减少耦合

    类内部的视线可以自由地修改

    类具有清晰的对外接口。


    接口:

           接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦实现了接口,类就可以支持接口所指定的所有属性和成员。声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。所以接口不能实例化,不能有构造方法和字段,不能有修饰符,不能声明虚拟的或静态的等。实现接口的类就必须要实现接口中所有方法和属性。


    一个类可以支持多个接口,多个类也可以支持相同的接口。


    创建:

    接口用interface声明,接口名称前加“I”,接口中的方法或属性前面不能有修饰符、方法没有方法体。

    interface IPoint
    {
          String ChangePoint(string Point);    //声明一个IPoint接口,该接口有一个方法ChangePoint,参数是一个字符串变量,返回一字符串
    }

    接口与抽象类:

            在很多设计模式的讲解中,我们经常可以看到这样的表述,A本身是一个抽象类,但却是一个接口的作用或者功能。但两者是有区别的,抽象类可以给出一些成员的实现,接口却没有。抽象类的抽象成员可以被子类部分实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类,但可以实现多个接口。

           在一定意义上,它们都是抽象。类是对对象的抽象,抽象类是对类的抽象,而接口是对行为的抽象。

           当行为跨越不同类的对象时,可使用接口;一些相似的类对象,用继承抽象类。比如,猫、狗等可以去继承动物这个类。但对于飞机、超人来说,它们就不是同一个类的东西,但它们都会飞,这时就要用接口来实现了。

           我们从猫、狗这两个子类中发现了很多公有的东西,从而抽象出父类来,让子类继承父类(动物类)。但是接口就不同了,接口根本不知道子类的存在,方法如何实现还不确认,预先定义。简言之,抽象类是自底而上抽象出来的,而接口是自顶而下设计出来的。


  • 相关阅读:
    介绍一个小工具 Linqer
    wcf系列5天速成——第一天 binding的使用(1)
    wcf系列5天速成——第二天 binding的使用(2)
    wcf系列学习5天速成——第三天 事务的使用
    iptables 使用
    rsync 文件.数据同步
    Nginx打开目录浏览功能
    linux 添加开机启动
    watch 命令
    python 命令行处理
  • 原文地址:https://www.cnblogs.com/saixing/p/6730352.html
Copyright © 2011-2022 走看看