C#面向对象基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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().静态方法只能用类调用,非静态方法用实例调用。

以上是关于C#面向对象基础的主要内容,如果未能解决你的问题,请参考以下文章

C#基础-面向对象详解

C#面向对象基础

C#面向对象基础

.NET基础拾遗面向对象的实现和异常的处理基础

《C#零基础入门之百识百例》(五十一)面向对象概述 -- 一维多项式求值

C#面向对象基础2