---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
第7课 面向对象
一、面向对象概念
1、 世界是由什么组成的:
例:化学家 想的是分子
画家 想的是颜色
程序员 想的是0 1
2、 万物皆对象
3、 试着描述蒋老师和学生张三的特征和行为。
描述对象从两方面描述:1、特征 2、行为
属性:对象具有的各种特征
每个对象的每个属性都拥有特定值。
例如:杨老师和张三的年龄不一样。
属性:姓名、性别、年龄
属性的值:
方法:行为、动作、执行的操作
方法:杨老师的行为:上课
学生的行为:学习
类:类是模板(模子),确定对象将会拥有的特征(属性)和行为(方法)。
类是对象的类型。
Int a;
数据类型 变量名;
人类 刘欢;
类和对象的区别
A) 类是抽象的概念,仅仅是模板,比如说:“人”类
B) 对象是一个你能够看得到、摸得着的具体实体。
“人”类都有:姓名\性别\年龄 属性,有说话的方法。
张三是一个属于人类对象,他的姓名属性的值:张三 性别的属性值:男 年龄的属性值:20 张三会说话
C) 对象可以叫做类的实例(instance)
D) 类不占内存,对象才占内存。
定义类的语法:
[访问修饰符]class 类名
{
成员;
……
}
类中可以包含变量的定义、方法。
练习:定义一个人类,人类分别用三个变量来表示姓名、性别、年龄,有一个打招呼的方法,有一个走路的方法。
下面我们定义了一个叫Person的类,这个类仅仅是人这个对象的模板。在这个模板中规定人类对象都应该有姓名、性别、年龄属性和SayHello方法。
代码如下:
如何通过一个类来产生一个对象呢?
通过类来产生一个对象的过程,叫类的实例化。
语法:类 实例名 = new类( );
访问类的属性:
实例名.属性名
访问类的方法:
实例名.方法名()
例:// Program zsPerson = new Program();
Person zsPerson; //定义了一个变量,这个变量的类型是Person类型。
zsPerson = new Person();//通过new关键字来产生一个person对象,并把person产生的对象赋给zsPerson这个变量。
Static
只要是 没有加 static 的方法或属性,都 必须先实例化,再通过 实例名 . 方法名 或 实例名 . 属性来访问。
加static的方法或属性,可以直接通过类名.方法名 或类名.属性来访问。
访问修饰符:在C#中有4个访问修饰符
Public:可以在任何地方被访问
Intirnal:只能在本项目中被访问
Private:只能在本类中被访问
protected:只能在本类和子类中被访问
在类这个级别,不写访问修饰符默认为internal
在一个类中定义变量或方法时,没有写访问修饰符,那么默认的访问修饰符为private。
属性
1、 字段用public修饰的问题。
2、 属性的定义get; set;
3、 属性是为了保护与之相对应的字段的,保证对字段的读取和赋值符合要求。
4、 属性可分为:读写、只读、只写。
5、 允许外部访问的变量一定要声明为属性。
什么叫属性:通俗点说,就是定义一个public的具有get/set方法的变量。这个变量是用于保护一个私有变量。
Value 中就是存储着用户赋的那个值。
读写属性:
具有get/set方法的属性称为读写属性。
只有get方法的属性称为只读属性,这个属性只能读取,不能写入。
只有set方法的属性称为只写属性,这个属性只能写入,不能读取(只写属性用的很少)。
类的练习:
1、 定义一个学生类,有六个属性,分别为姓名、性别、年龄、语文、数学、英语成绩。
2、 有2个方法:
a) 一个打招呼的方法:介绍自己叫XX,今年几岁了。是男同学还是女同学。
b) 一个计算自己总分数和平均分数并显示的方法。{显示:我叫XX,这次考试总成绩为X分,平均成绩为X分}
3、 实例化两个对象并测试:
a) 张三 男 18 三科成绩为:90 9580
b) 小兰 女 16 三科成绩为:95 85100
当我们实例化一个类时,系统会自动对这个类的属性进行初始化:
数字类型初始化成:0/0.0
string类型初始化成:null
char 类型初始化成:\0
使用构造方法的好处:
1) 对多个属性进行赋值时,不需要重复的写实例名。
2) 可以保证用户在new一个对象的时候必须对某一个属性进行赋值。
3) 和第2类似,在创建对象时,对只读属性进行初始化。
当我们定义好一个类之后,如果我们没有写构造方法,那么系统会自动给我们加上一个默认的没有参数的构造方法。在这个构造方法中什么也不做,我们也看不到。
我们可以定义一个构造方法:
构造方法是一个特殊的方法,他的名字和类的名字相同,并且没有返回值,连void都可以省略不写。我们一旦手写一个构造方法后,系统原先默认给我们添加的那个无参的构造方法就不会再给我们添加了。
This 表示:当前实例,当前类
要实例化一个类,必须调用他的构造方法。
C#类图
注解:在中间字段框里,- 表示私有 +表示公有, :后边表示这个数据的类型
第三个框里表示的是方法
析构函数(了解)
a) 不能再结构中定义析构函数,只能对类使用析构函数。
b) 一个类只能有一个析构函数。
c) 无法继承或重载析构函数。
d) 无法调用析构函数,它是被自动调用的。
e) 析构函数既没有修饰符,也没有参数。
练习1:
给前面写的学生类添加构造方法,使在实例化学生类的时候可以通过构造方法对姓名、性别、年龄、语数英等属性赋值,也可以只对姓名和性别赋值。年龄默认为18岁,语数英成绩默认为0分。
测试上面的类。
练习2:
写一个Ticket类,有一个距离属性(本属性只读,在构造方法中赋值),不能为负数,有一个价格属性,价格属性只读,并且根据距离计算价格(1元/公里):
0—100公里 票价不打折
101—200公里 总额打9.5折
201—300公里 总额打9折
300公里以上 总额打8折
有一个方法,可以显示这张票的信息。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net