美文网首页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)面向对象编程、 类、装箱拆箱

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

  • 三 常用API第二部分——第六节 包装类

    1、包装类的概念 2、装箱与拆箱 装箱:基本类型-->包装类对象拆箱:包装类对象-->基本类型 3、自动装箱与拆箱...

  • Unity笔试题

    1·描述一下C#中的装箱和拆箱,下面哪些地方会发生装箱或者拆箱? a) int a= 10; b) Object ...

  • 8.包装类,包装类的自动装箱和自动拆箱

    问题:关于 Java 包装类,包装类的自动装箱和自动拆箱你怎么理解? 从程序语言来说,Java语言是一个面向对象语...

  • jdk5新特性

    自动装箱与拆箱 // 自动装箱:值转对象Integer n = 1;// 自动拆箱:对象转值int m = n; ...

  • 从0开始复习java(3)

    一、面向对象 1、包装类 java5之后有自动装箱和自动拆箱功能。 包装类可以实现基本类型变量和字符串之间的转换。...

  • 全面理解面向对象的JavaScript

    面向对象是一种编程思想,Java、C#等都以“类”作为面向对象的实现方式。从而可能阻碍大家对于面向对象编程的语言的...

  • Java编程回忆录1/X

    包装类、装箱、拆箱程序设计已经发展了几十年了,从面向过程到面向对象,再到现在的面向函数等,最核心的还是将现实世界转...

  • 2018年9月6日.NET笔试面试题

    什么是装箱(boxing)和拆箱(unboxing)?C#中值类型和引用类型的最终基类都是Object类型(它本身...

  • C# 装箱,拆箱,向上转型,向下转型

    c#中,数据类型分为值类型和引用类型,装箱和拆箱属于值类型和引用类型间的转换操作。 装箱:值类型向引用类...

网友评论

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

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