C#编程自学之类和对象
投稿:lijiao
在之前的文章中介绍了C#是一种完全面向对象的语言,既然是完全面向对象的语言就应该用面向对象的模式去学习C#,不了解面向对象?不必担心。这篇文章将介绍学习C#基础部分所要用到的面向对象的知识,后面文章我们将系统的介绍C#面向对象编程。接下来就开始我们C#旅程的起点!
一、类与对象
1 什么是类?
在我们现实世界中,我们经常会把具有一系列相同行为和属性的事物归类,例如:人类,人类就是我们所说的类。
例如 所有的人都有五官,内脏等等(除其他特殊原因),这些组成部分我们称之为人类的属性。
所有的人都要吃饭,睡觉等等(除其他原因如减肥),这些动作我们称之为行为。
2 什么是对象?
我们刚才知道了什么是类与类的行为与属性,那么对象就是这个类的一个实体!
类就是一组行为与属性的描述,对象就是符合这些描述的实体。
如图
类:类就是一系列相同行为与属性的描述与抽象。
对象: 对象就是类的一个实体,真是存在的实例,那么人类对象就可以吃饭睡觉,并且具有五官与内脏。
二、类的成员
上面了解了类与对象的基本概念后,我们来看一段代码:
using System; namespace MyHelloWorld { class Student { public string _name; public int _age; } class Program { static void Main(string[] args) { Student std = new Student(); //创建一个学生类的对象 std._name = "张三"; //给学生对象的名字属性赋值 std._age = 20; //给学生对象的年龄属性赋值 //打印学生对象std的姓名与年龄 Console.WriteLine("我的姓名是:"+std._name); Console.WriteLine("我的年龄是:"+std._age); } } }
首先看第5 ~ 9行代码,演示了C#创建类和属性(代表C#字段暂理解为面向对象中的属性,当讲述到C#属性的时候我会更正)的语法:
class Student { public string _name; public int _age; }
我们定义了一个学生类,这个学生类有两个属性,一个是姓名,一个是年龄。
在看看属性前面的修饰符 public ,它是类成员是否可被外部访问的一个修饰符:public 代表为公共的,也就是说将来对象外部可以访问这个属性,如何访问?看15 ~ 17行代码:
Student std = new Student(); //创建一个学生类的对象 std._name = "张三"; //给学生对象的名字属性赋值 std._age = 20; //给学生对象的年龄属性赋值
这个时候都当学生对象创建的时候,我们可以通过:对象.属性的方式访问属性并给属性赋值。
紧接着调用上篇文章介绍的控制台类,将学生对象的两个属性的值打印输出到控制台。运行效果如下:
以上就是类的属性以及属性的访问。
三、类的方法
刚才封装了学生类的属性,接下来我们要看学生类的行为比如学生需要学习。升华刚才的代码如下:
class Student { public string _name; public int _age; public void ToLearn() { Console.WriteLine(this._name+"去学习啦!"); } }
第6~9行代码就是一个方法的标准定义与实现.
首先看定义(定义方法就是描述这个行为是干什么的):
访问修饰符 返回值类型 方法名称(行为名称)
访问修饰符: public 表示公共的,将来对象外部可以访问次方法
返回值类型: void 表示该方法没有返回值
方法名称 : ToLearn 顾名思义就是去学习的一个方法(行为)
接下来看方法的实现 (实现发放就是描述这个行为是怎么实现的):
方法的定规 { 方法的实现 }
我们这个方法实现了在控制台输出一句话内容是自己的姓名加上去学习啦!表示要去做的事。
如何访问方法?
Student std = new Student(); //创建一个学生类的对象 std._name = "张三"; //给学生对象的名字属性赋值 std._age = 20; //给学生对象的年龄属性赋值 std.ToLearn(); //调用去学习方法
Ctrl + F5 运行结果如下:
四、访问修饰符
接下来就是访问修饰符的介绍,大家在上面例子也看过啦,认识了一个public的访问修饰符,接下来看看C#还有哪些访问修饰符:
public : 将类成员标记为公共,表示对象向外部可以访问。
private: 将类成员标记为私有的,表示对象外部不可以访问。
protected:将类成员标记为受保护的,可以被子类继承,外不不能访问。
internal: 将类成员标记为程序集内可以访问,程序集外部不能访问。
protected internal:将类成员标记为当前程序集内可以访问,外部不能访问,但是从本程序集类型派生出的子类可以访问。
以上不明白的没关系这里只是列举介绍一下,后边文章会陆续的详细解释。
五、引导你的伪代码
class 人类 //人类 { public string 姓名; //人类的属性 名字 public int 年龄; //人类的属性 年龄 public void 吃饭(食物) //人类外部可访问可控制的方法 吃饭 { 内脏消化(食物); } private void 内脏消化(食物) //人类内部的方法行为 外部不能访问,例如吃饭我们人可以控制,但是怎么消化是内脏控制 所以外部不能访问 { //对事物的消化过程 } } class Program { static void Main(string[] args) { 人类 人 = new 人类(); //人类对象 人.姓名 = "张三"; //给人类的名字属性赋值 人.年龄 = 20; //给学生对象的年龄属性赋值 人.吃饭(汉堡); //调用吃饭方法 //这里就不能调用 人.内脏消化() 方法 因为他是私有的 类内部执行的 } }
以上内容就是介绍了C#基础部分所需要的面向对象的基础知识,只需要了解我所解释的部分就可以啦,部分提出来的没理解也没关系,之后的文章中会详细的介绍。