• C#面向对象基础


    1、  为什么要有面向对象?

    (1)       增加代码重用。

    (2)降低维护负担,将具备独特性质的代码封装起来,修改程序时,相互不会影响。

    2、数据封装用来解决全局变量不易维护的问题。

    3、多态:为了加强继承的弹性,常常需要子类对父类的方法进行重写(函数名称不变)。

    4、抽象化是为了降低程序版本更新后的维护负担。使功能的提供者和使用者分开,各自独立,彼此不受影响。

    5、为了抽达到象化,提供接口用于建立功能提供者和使用者之间的规范。功能提供者和使用者按照这个规范来提供、使用这些功能。这个功用的规范就是接口。接口中定义了常量、函数名称、函数参数等。因此接口不改变的情况下,功能提供者就可以任意的改写函数中的代码,而不会影响到使用者使用这些功能。

           抽象化的优点:

           .可编写函数处理有相同接口的类

    例如:员工薪水的发放:按照职位、工龄发放,只需要定义一个计算薪水的接口,然后分别实现。

    .用于未来功能的扩展。

    .让功能提供者和使用者相互独立。

    6、通常继承应用在公司的内部开发上,以重复使用其他设计师编写好的代码;而接口多半是用于两个部门或两家以上的公司,用于分别开发自己的应用程序时建立的公用的规范。

    7、类是数据封装的基本单位。是重复使用的最小单位。

           类的成员:变量、方法、属性、事件、常数

           对象是类在内存中的实体,类用于描述对象在内存中的数据。也就是说类用于定义对象的长相。

    8、静态方法可以不建立类的对象,即不用new实例化,而用类直接调用:类名.方法名()

           Static变量通常用于配置全局共用的区块

    9、结构和类的区别:结构主要由简单的数值类型组合而成,配置在堆栈中。类属于参考类型,配置在堆积中。结构不支持继承。

    10、数据封装:使用类进行封装。

           封装目的:数据和方法被封装起来,通过方法存取数据。可以控制数据的存取方式。

    11、访问修饰符:

           public:所有

           private:类中的方法和成员只能在此类中使用,外部不能使用。

           protected:类自身可以使用、子类也可以使用。protected并不是被派生类随心所欲的访问,访问是有条件的:访问必须是子类类型发生时,父类的protecte成员才能够被访问

           internal:同一个.NET Assembly中可以使用

           protected internal:只限定在目前的项目或继承自此类的成员才可以使用

    注意:在声明方法是,默认识private

           一个好的面向对象的设计,通常把所有的数据成员定义为private,然后提供方法来存取这些数据

    12、数据封装的目的:易于控制数据、容易修改。

    13、静态成员:

           对象中的数据都是对象私有的,只有对象才能操作这些数据,其他对象不能操作。那么有时候把所有对象共用的数据保存在每一个对象中并不是很好,比如一个公司的所有员工同属于这个公司,若在员工类中定义一个存放公司名称的成员变量,那么,在实例化对象后,都需要用:对象名.方法名() 来存取公司名称信息,这样若公司名称改变了,维护起来比较麻烦,并且计算机还要分配内存、硬盘空间等,为了解决这个问题,在实现的时候会将这种数据放在全局的内存区块上,也就是说,这个数据不是对象能够操作的,而是类级别的,对象操作不了。但是,全局的数据并不是保存在类中的,因此,不能够使用封装的技巧使用全局变量,取而代之的是以静态static的方式来描述这样的数据。静态类就是用来描述类中共用信息的。

           静态数据是在类中声明的,所以能够体现封装的特性。就算这个定义了静态数据的类没有被实例化,该静态数据还是存在的。所以,不用建立对象实体就可以对静态数据进行操作。

           编译器会在类载入是自动初始化static变量,也就是说,若静态的成员变量没有被赋值,那么在编译时,编译器会自动给变量赋值。String类型是空字符串,int类型是0,bool类型是false,生命周期被限定在应用程序的生命周期中

    14、静态方法:

           对静态数据进行操作需要使用静态方法,静态方法属于类,是类级别的,不是对象能够操作的,静态方法不能用this保留字

           通常,编译器Compiler在编译时会将静态数据和静态方法当做全局变量或全局函数来对待。默认的静态数据是private的

           静态方法不能够存取非静态数据和非静态方法。

           windows应用程序中Main()方法定义为public static,不需要实例化Runtime就可以直接运行Main().静态方法只能用类调用,非静态方法用实例调用。

  • 相关阅读:
    vue中handsontable 使用
    vue项目在APP禁止页面缩放
    SuperAgent使用文档
    echart 图表自定义样式
    vue router-link子级返回父级页面
    浏览器的多线程
    gzip压缩
    清除浮动的方法
    vue-router的hash和history模式的区别
    Docker镜像+nginx 部署 vue 项目
  • 原文地址:https://www.cnblogs.com/huluobozu/p/5068166.html
Copyright © 2020-2023  润新知