你的位置:首页 > ASP.net教程

[ASP.net教程]逻辑串说面向对象知识点


学面向对象也有一段时间了,再次回顾,整理所得,写成这篇,知识点只是大致说,细节每本关于面向对象的书都有,就不啰嗦占用时间和篇幅了.

一  面向对象编程的由来:

  和面向对象编程相对应的是面向过程编程
    

    面向过程编程:就像造发动机一样,需要一步一步制造汽缸,活塞,喷油嘴等等,有先后顺序

    面向对象编程:没有先后顺序,将发动机的所有组件全部制造出来,放在一个仓库中.这个仓库就叫函数库.然后将所有组件组装成一个发动机.

    但是软件的包很不好管理,上世纪70年代,美国海军部提出面向对象编程.将汽缸看做是一个对象,把汽缸的所有属性和功能全部封装到一个文件当中,调用方法,更改属性,都可以

调用这个封装好的文件.这样就最大程度上实现编程的模块化.

    软件没有实际物质,当函数库中的函数写出来以后,就不需要再重写,只需要调用就可以.所以软件开发只需要前期编辑成本,开发完成后就是零成本,这也是360免费,软件行业免

费趋势的原因.

二  模块化的目的:为了代码复用.

   代码复用的方式:组合和继承

    相对于继承,更多的用到组合.实例化和调用是组合最常用到的方式.能用组合尽量用组合.

    继承一般情况下是方法的功能不够强大,需要对方法进行覆写.所以尽量做到不覆写不继承.

    覆写需要遵守的规范:

        两个类必须有继承关系;

        不能有更小的权限;

        不能有更宽泛的异常;

        方法名,返回值,形参要一致;

        私有方法不能被覆写,即使覆写也会访问父类的;

        构造方法不能被继承,不能被覆写;

        静态方法不能被覆写;

        覆写是特指成员方法的覆写,和成员变量,静态变量,静态方法无关.
  

这其中就涉及了对象的封装:其权限依次减小:public protected default private

三  覆写的目的是增强父类方法的功能.方法的覆写和重复,重载的区别:

      重复:只要是方法名相同,参数列表相同,方法就是重复

      覆写:权限修饰符可以更大,方法名相同,参数列表相同

      重载:和覆写基本上没有关系,和继承也没有关系,权限修饰符相同,方法名相同,参数列表不同

 所以,方法最终的唯一识别方式就是方法名和参数列表.

 说到继承,必须要提的一个原则:

     里氏替换原则:能用父类的地方肯定能用子类.这就是通常所说的多态.

 变量声明的三个步骤:用类名声明数据类型开辟空间,给空间命名,把值放入空间.多态发生在赋值的地方.

 所以多态有四种形式:哪里用到变量,哪里就可以多态.

      直接实例化

      成员方法多态

      构造方法多态

      成员变量多态

多态包含两种方式:向上转型和向下转型(用instanceof判断),主要应用在集合中.

和其相似结构的是内部类.

数据类型是一个类.所以数据类型出现的地方都可以替换成内部类.

只有在声明变量的时候用到数据类型,所以有

    成员内部类----成员变量

    静态内部类----静态变量

    局部内部类----局部变量

    匿名内部类----形参变量

下面附上几张大致的知识点框架图,仅供参考