先看一下创建一个新项目时的基本格式
using System; using System.Collections.Generic; using System.Linq; //引用的命名空间 using System.Text; namespace ConsoleApplication1 //命名空间 (程序集) ConsoleApplication1 为命名空间名称 { class Program //类 , Program 是类名 { static void Main(string[] args) //函数 { } } }
1、命名空间
一个解决方案下可以有多个项目,每个项目就是一个命名空间(程序集),在每个项目下面添加类的文件引用不同命名空间下的类时,将命名空间名称添加到主页的引用命名空间里
namespace ConsoleApplication1.wahaha //命名空间
using ConsoleApplication1.wahaha;//引用命名空间是的格式
2、类
一个命名空间下可建多个类,一个类文件一般放一个类,可对类进行封装
class Program //program 类 是程序的主入口,各程序模块的汇总
3、访问修饰符
位于“类”名前方
public // 公共的 -- 访问权限是最高的 private //私有的 -- 只能在类的内部进行访问 internal //默认的 -- 当前命名空间(程序集)下可以访问 protected //被保护的 -- 当前类及它的派生类中可以访问
4、封装
对成员变量进行封装
定义类 ——成员变量——属性
class 类名 { private 数据类型 _名称; //成员变量,字段 --是私有的 public 数据类型 名称 //属性 { get{ return _名称; } set{ _名称 = value; } } }
使用类,在min函数中引用 (实例化对象)
类名 对象 = new 类名();
student a = new student( );
例1、 对成员变量的封装
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Student { private string _Code; //成员变量 public string Code { get { return _Code; } set { _Code = value; } } private string _Name; public string Name { get { return _Name; } set { if (value == "") _Name = "<暂无>"; else _Name = value; } } private DateTime _Birthday; public DateTime Birthday { get { return _Birthday; } set { _Birthday = value; } } public int Age { get { int end = 0; end = DateTime.Now.Year - _Birthday.Year; return end; } } private decimal _Score; public decimal Score { get { return _Score; } set { if (value > 100 || value < 0) _Score = 0; else _Score = value; } } } }
// 属性的类型与字段的类型可以不同
// get set 根据需要可以只有一个
例2、对方法封装
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public class Math1 { public int JiaFa(int a, int b) { return a + b; } } } ————————————————————----- ——对方法的引用 Math1 m = new Math1 ( ); m.JiaFa( 10,20 );
5、继承
子类:父类 (子类继承父类)
父类 (基类),子类 (派生类 超类)
一个子类只能有一个父类,子类可以继承全部父类中的public的方法和属性
案例
namespace ConsoleApplication3 { public class Fly { public virtual string Flying() { return "我会飞!"; —— 父类 } } } —————————————————— namespace ConsoleApplication3 { public class Bird : Fly { ——子类 } }
6、多态
类的多种形态
有了继承才有了多态
virtual //虚方法 -- 写在访问修饰符之后(成员变量中), override // 重写函数体 -- 可以被子类进行重写,只能重写函数体
案例
namespace ConsoleApplication3 { public class Fly { public virtual string Flying() { return "我会飞!"; } } } ———————————————— namespace ConsoleApplication3 { public class feiji : Fly { public override string Flying() { return "屁股喷火就能飞!"; } } }