- 类(Class)是现实世界事物的模型
- 类与对象的关系
- 什么时候叫“对象”,什么时候叫“实例”
- 引用变量和实例的关系
- 类的三大成员
- 属性(Property)
- 方法(Method)
- 事件(Event)
- 类的静态成员与实例成员
- 关于“绑定”(Binding)
类是现实世界事物的模型
- 类是对现实世界事物进行抽象所得到的结果
- 事物包括“物质”(实力)与“运动”(逻辑)
- 建模是一个去伪存真,由表及里的过程
类与对象的关系
- 对象也叫实例,是类经过“实例化”后得到的内存中的实体
- 依照类,可以创建对象,这就是“实例化”
- 现实世界常称“对象”,程序世界常称“实例”
- 二者并无太大区别,常常混用
- 使用new操作符创建类的实例
- 引用变量与实例的关系
- 孩子(引用变量)和气球(实例)
- 气球不一定有孩子牵着
- 多个孩子可以使用各自的绳子牵着同一个气球,也可以都通过一根绳子牵着气球
using System.Windows.Forms;
namespace ClassAndInstance
{
class Program
{
static void Main(string[] arg)
{
Form myForm; //声明一个引用变量
myForm = new Form();//使用引用变量来引用一个新创建的实例
myForm.Text = "MyForm!";
myForm.ShowDialog();
}
}
}
类的三大成员
- 属性(Property)
- 存储数据,组合起来表示类或对象当前状态
- 方法(Method)
- 由C语言中的函数(function)进化而来,表示类或对象“能做什么”
- 工作中90%的时间是在与方法打交道,因为它是“真正做事”,“构成逻辑”的成员
class Program
{
static void Main(string[] arg)
{
double result = Math.Pow(2,2);
Console.WriteLine(result);
}
}
- 事件(Event)
- 类和对象通知其他类或事件的机制,为C#所特有(Java通过其他办法实现这个机制)
- 善用事件机制十分重要
使用WPF程序演示事件机制:
using System.Windows.Threading;
namespace Event
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DispatcherTimer timer = new DispatcherTimer();//引用变量timer,将Dispatchertiemr类实例化
timer.Interval = TimeSpan.FromSeconds(1);//赋予timer属性(时间间隔1s)
timer.Tick += Timer_Tick;//挂接事件处理器。每当Tick事件触发,Timer_Tick函数执行一次
timer.Start();//开始执行
}
private void Timer_Tick(object sender, EventArgs e)
{
this.timeTextBox.Text = DateTime.Now.ToString();
}
}
}
执行结果:实现简易桌面时钟
- 使用MSDN文档
- 某些特殊类或对象在成员方面侧重点不同
- 模型类或对象重在属性,如Entity Framework
- 工具类或对象重在方法,如Math,Console
- 通知类或对象重在事件,如各种Timer
静态成员与实例成员
- 静态(Static)成员在语义上表示它是“类的成员”
- 实例(非静态)成员在语义表示它是“对象的成员”
- 绑定(Binding)指的是编译器如何把一个成员与类或对象关联起来
- “.”操作符——成员访问
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello");//WriteLine是Console类的静态成员方法。可直接用"."操作符访问
Form myForm = new Form();//先对Form类进行实例化
myForm.Text = "MyForm";//实例化后访问实例成员属性
myForm.ShowDialog();//实例化后访问实例成员方法
}
}