什么是面向对象
一种用编程语言来描述客观事物的思想,它不仅仅是一门技术或语法,而是一种思维方式。
类
从中文的角度来讲,类就是指一个类别一个种类,是指一个种类中的所有事物的共同的特征。就好像这个类别中的所有个体的模板一样。
类,也可以看做是一种由程序员自己定义的数据类型。比如:我们创造了一个数据类型是人类,那么这个类中的具体的一个成员就是这个类的一个数据。
在C#中,类用关键字class来表示。
抽象
当我们要开始一个软件的时候,其准备工作之一,就是要从软件的需求当中提取出有哪些类,比如:说我们要开始一个游戏,就要首先归结一个有哪些共同特征的事物(哪些类):玩家类,npc类 , 怪物类 , 花花草草,山川河流 。这些类都是我们在开始一个游戏之前要总结出来的,这个过程,就叫做抽象。
设计类的过程就是一种对现实世界或业务的抽象的过程。
抽象的步骤
也就是描述一个类的步骤
描述一类事物共同的静态特征,比如:身高、重量、年龄、型号
描述一类事物共同的动作能力特征,比如:说话、飞、游泳
对象
对象是指一个类中符合群体特征的一个具体的成员,它是实实在在存在的一个事物。
对象的每一项特征都应该具备具体的量化的数值。
创建类与对象的示例:
class dog { //定义的一个(种)类:狗 } dog 旺财 = new dog(); //创建一个狗类中的成员 dog 黑子 = new dog(); dog 小白 = new dog(); dog 大黄 = new dog(); //只要有类这个“模板”,我们就可以无限的创造这个类的对象。
实例化
利用一个类来创建一个具体的对象的过程,我们叫做实例化。
语法:
类名 对象名 = new 构造函数();
属性
就是指一个事物,或一类事物的特征,及其具体的值。比如:人类的身高、体重、三围、姓名、国籍、肤色、民族、姓氏。
示例:
class dog { public string 毛色; //定义狗类有哪些属性特征 public float 体重; } class Program { static void Main(string[] args) { dog 旺财 = new dog(); 旺财.体重 = 20; //给旺财的每一项特征属性添加具体的值。 旺财.毛色 = "金黄色"; Console.WriteLine("我家旺财毛色是{0},重{1}斤",旺财.毛色,旺财.体重); //通过 对象名.属性名 的方式来调用对象的属性值 } }
方法:
就是指一个事物,或一类事物的共有的动作能力,或可以执行的某种活动。
比如:所有的鱼类都可以游泳,所有的狗都会汪汪叫。
包含在类里面的变量我们也可以叫成员变量,同样,包含中类里面的方法也可以叫做成员函数。
示例:
class dog { public void 叫() { Console.WriteLine("I am 旺财,汪汪汪"); } } class Program { static void Main(string[] args) { dog 旺财 = new dog(); 旺财.叫(); } }
注意:当我们用面向对象的方式来描述客观事物的时候,我们只需要来描述那些我们需要的属性和方法就可以了,而不是必需将这个事物的所有参数特征都描述出来,因为完全没有必要,就像写小说一样。
面向对象的三大特征
封装
就是将不需要普通用户看到或操作的部分代码隐藏起来,以保护程序的安全性。只暴露出用户能访问的接口即可。
继承
一个类继承另一个类,那么前者也就具备了后者的特性。
多态
同一个事物对象,在不同的条件和环境之下,其所表现出来的形态是不一样的。
练习:
假设你现在要设计一款游戏,用面向对象的思想思考一下这个游戏里面有哪些类。可以尽可能的思考一些有创意的游戏。