美文网首页csharp
C#(12)面向对象编程、 类、装箱拆箱

C#(12)面向对象编程、 类、装箱拆箱

作者: cGunsNRoses | 来源:发表于2017-08-29 19:13 被阅读37次

    8yue21

    面向对象

    面向过程思想,强调的是完成某一件事情需要哪些步骤的先后顺序,侧重于实现功能步骤

    面向对象思想,强调完成某一件事情需要哪些对象相互协作来完成,参与该事情的对象需要具备哪些功能,同时,该事件也是所有事件当中的某一功能,侧重于对象(类)的设计,

    面向对象核心:转变考虑问题的方式,思考完成这件事需要哪些对象的来参与完成,协调实现


    OOP(面向对象编程)达到软件工程的三个目标:

    1、重用性 2、灵活性 3、扩展性


    面向对象的优点  (低耦合 高类聚)

    1、面向对象具有良好的可扩展性和重用性;

    2、面向对象可以降低我们代码的耦合度(两个类的关联),提高代码的可移植性

    3、面向对象接近于我们日常生活和自然的思考方式,可以提高我们代码软件开发的效率与质量

    简答题:说说面向过程与面向对象

    回答此类简答题要求详细,逻辑循序渐进,由浅入深。

    所以回答该问题应该首先回答面向过程与面向对象是什么,

    接着回答两者的特点以及区别,最后要说两者优缺点


    面向过程是以事件为中心,强调的是完成某一件事情需要哪些步骤以及步骤的先后顺序。

    面向对象以对象为中心,强调完成某一件事情需要哪些对象相互协作来完成,参与该事情的对象需要具备哪些功能。

    面向过程特点是分析解决事物的步骤以及先后顺序,侧重的是实现功能的步骤。

    而面向对象侧重的是分析事物需要参与的对象,各个对象的作用,

    以及完成该事件每个对象需要负责的功能,侧重于对象的设计。

    面向对象三大特性

    封装(方法、属性)、继承、多态

    定义:类是描述具有相同特征与行为的事物的抽象

    作用:1、区分不同的事物 2、描述某种事物具备什么特征以及能做什么事 3、类是一种构造,通过该构造可以将不通类型的变量、方法组合在一起创建出自定义类型  4、类是面向对象程序设计实现信息封装的基础

    类的声明

    关键字 class  格式:访问修饰符 class 类名{类成员变量}

    字段:是用来描述特征的 

    字段声明格式:访问修饰符 字段类型 字段名;

    声明时初始化:访问修饰符 字段类型 字段名 = 初始值;

    字段是用来描述 类的特征的

    方法是用来描述 类的行为的

    装箱(boxing)和拆箱(unboxing)是C#类型系统的核心概念.是不同于C与C++的新概念!,

    通过装箱和拆箱操作,能够在值类型和引用类型中架起一做桥梁.换言之,可以轻松的实现值类型与引用类型的互相转换,装箱和拆箱能够统一考察系统,任何类型的值最终都可以按照对象进行处理.

    C#语言中的所有类型都是由基类System.Object继承过来的,包括最常用的基础类型:int, byte, short,bool等等,就是说所有的事物都是对象。如果申明这些类型得时候都在堆(HEAP)中分配内存,会造成极低的效率!(个中原因以及关于堆和栈得区别会在另一篇里单独得说说!)

    .NET如何解决这个问题得了?正是通过将类型分成值型(value)和引用型(regerencetype),C#中定义的值类型包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举(enum)、结构(struct),引用类型包括:类、数组、接口、委托、字符串等。

    值型就是在栈中分配内存,在申明的同时就初始化,以确保数据不为NULL;

    引用型是在堆中分配内存,初始化为null,引用型是需要GARBAGE COLLECTION来回收内存的,值型不用,超出了作用范围,系统就会自动释放!


    装箱和拆箱的定义!

    装箱就是隐式的将一个值型转换为引用型对象。比如:

    int i=0;

    Syste.Object obj=i;

    这个过程就是装箱!就是将i装箱!

    拆箱就是将一个引用型对象转换成任意值型!比如:

    int i=0;

    System.Object obj=i;

    int j=(int)obj;

    这个过程前2句是将i装箱,后一句是将obj拆箱!

    再写个代码,看看进行了几次装拆箱!

    int i=0;

    System.Object obj=i;

    Console.WriteLine(i+","+(int)obj);

    其中共发生了3次装箱和一次拆箱!^_^,看出来了吧?!

    第一次是将i装箱,第2次是输出的时候将i转换成string类型,而string类型为引用类型,即又是装箱,第三次装箱就是(int)obj的转换成string类型,装箱!

    拆箱就是(int)obj,将obj拆箱!!

    相关文章

      网友评论

        本文标题:C#(12)面向对象编程、 类、装箱拆箱

        本文链接:https://www.haomeiwen.com/subject/pxphdxtx.html