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

8yue21

面向对象


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

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

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


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

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


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

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

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

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



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

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

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

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


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

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

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

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

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



面向对象三大特性

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

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

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

类的声明

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

字段:是用来描述特征的 

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

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


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

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



C#(12)面向对象编程、 类、装箱拆箱_第1张图片

装箱(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)面向对象编程、 类、装箱拆箱)