zoukankan      html  css  js  c++  java
  • 浅谈面向对象三大特性

    面向对象三个基本特征由:封装,继承和多态构成.

    1:封装

       封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。

    封装表面的意义便是将事物包裹起来,在生活中封装好比我们每天对电脑开关机,所以电脑就有开机和关机二个属性,开关机的方法被包裹在了电脑里,而我们所需要的便是按按钮,实现开关机,我们并不用理解是怎么实现的,只需要动动指头就行.

        对于开发者而言,面向对象程序的设计(Visual Studio等),会有二个身份,设计者和使用者.

        使用者就是利用已经提供好的所有对象,根据需求设计想要的程序.已经设计好的对象,我们直接调用就好,不必再重复的创造轮子

    ,.net FromWork所提供的类库,好比开关机

        设计者,就是设计功能的人,我们所用的软件的功能不可能面面俱到,有的时候需要我们来设计一个需要使用的对象.对于设计者要考虑到那些应该显示,那些需要被包裹起来,在C#中便需要用到修饰符 public 公开的 private 私有的 protected 半公开的

         public:表明所有对象都可以访问;
         protected:表明只有该类对象及其子类对象可以访问;(关于继承,会在以后介绍)
         private:表明只有对象本身在对象内部可以访问;

    2:继承

         通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。
         作用就是移除冗余的代码,其实生活中有很多继承的例子,如卡车,公共汽车,他们都是汽车,但卡车有自己的特征:有货舱,有额定载重,行为是可以拉货卸货,公共汽车特征:载客,有载客量,行为时报站,停靠站,但他们都有共同的特点:耗油,有车轮,有时速,可以刹车,行驶等等,他们就是继承关系,卡车和汽车便是继承汽车的一方
         而在C#中,一个类可以继承另一个类,被继承的类就是父类,继承的其他类便是子类或称派生类,父类里保留的是所以子类所需要的功能,而子类中冶可以增加新的数据和功能,也可以用以存在的类的功能.
         继承是面向对象编程中一个重要的特性,在有继承关系的二个类中,子类不仅具有自己独特的成员,还具有父类的成员.
         在使用时,可以用base调用父类的属性,也可以调用父类的方法和构造函数,父类中的成员如果用private修饰的话,他将作为私有成员,其他类无法访问,如果设置为共有成员public则任何类都可以访问,这样不符合封装和其他方面的要求,我们便需要用另外一种访问修饰符protected,被这个访问修饰符修饰的成员允许其子类访问,而不允许其他非子类访问.
    隐式构造函数:
         在我们创建子类对象时会首先调用其父类的构造函数,然后才会调用子类本身的构造函数,在没有指明要调用父类的哪一个构造函数时,系统会隐式的调用父类的无参构造函数.
    显示构造函数:
         C#可以用base关键字调用父类的构造函数,只要在子类构造函数后添加:base("参数列表"),就可以指定该子类的构造函数调用父类的那个构造函数.这样便可以实现继承属性的初始化,然后在子类本身的构造函数中完成对子类特有的属性的初始化.
    继承的二个特性:
    传递性和但根性.
    继承的价值:
    继承模拟了现实世界的关系,一切皆为对象.
    继承实现了代码的重用.
    继承使得程序结构更加清晰.
     
    3:多态
    多态按字面理解就是多种形态,指同一操作作用于不同的对象时,可以产生不同的解释,产生不同的结果.
    实现多态:
    虚方法.
    抽   象.
    接   口.
    在生活中有三种人:理发师,演员和外科医生当他们听到CUT时会产生不同的结果:
    理发师开始剪发;
    演员停止表演;
    医生会在病人的身体上切口;
    可以把三种不同职业的人看作三个不同的子类对象;他们都继承自人类,每个对象得到的命令都相同,但对于他们来说相同的命令有着不同的含义,
    从面向对象角度考虑,三种不同的对象对于同一个方法调用表现了不同的行为.
    这便是多态
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
      
        


      

     

  • 相关阅读:
    Linux下登录Oracle命令行时删除键^H解决方法
    Centos7 根目录存储空间扩展方法
    js取单选按钮,复选按钮的值
    根据地址-地名获取对应的经纬度
    根据中文获得首字母大写————适用于生成编号-流水号
    邮箱格式验证demo
    百度编辑器UEditor,地址栏传值长度有限-在webConfig配置
    基于ASP.Net +easyUI框架上传图片,实现图片上传,提交表单
    Js基础知识-入门
    基础面试题——Javascript
  • 原文地址:https://www.cnblogs.com/haonangao/p/4788921.html
Copyright © 2011-2022 走看看