《C#语言入门详解》学习笔记2——类、对象、成员简介

Class2 类、对象、成员简介

课前摘要

  • 类(class)是现实世界事物的模型
  • 类与对象的关系
  • 类的三大成员(共十多种,属性、方法、事件最常用)
  • 类的静态成员与实例成员
  • 关于绑定

一、类的理解

  • 类是对现实世界抽象所得到的结果
  • 事物包括“物质”实体与“运动”逻辑
  • 建模是一个去伪存真,由表及里的过程(注意理解)

例:飞机被飞行员驾驶——飞机类与飞行员类的依赖。(抽象过程)

二、类与对象的关系

  • 对象也叫实例,是类经过“实例化”后得到的内存中的实体
    在讨论现实中的逻辑时称为“对象”
    程序中讨论编程关系时称“实例”
    二者之间语境不同,但一般来说,可以混用

问:“飞机”与“一架飞机”区别?
天上有一架飞机必须是实例在飞,“飞机”这个类的概念不可以飞。
即“飞机”类对应现实中飞机的概念;“飞机实例”对应飞机在天上飞这个个体

  • 有些类不可以实例化。如“数学”这个类不可以说成“一个数学”。

三、引用变量与实例的关系

例:使用new建立类的实例
new Form();
(new Form()).Text=“my form”;
(new Form()).ShowDialog(); //气球并无孩子牵,飞掉了(被内存回收)
注:结果并没有改title,实际上,创建了两个实例,而第一句改的是实例1的title,第二句显示的是实例2的窗口,故得不到想要的结果

  • 为了连续操作同一个实例,这时需要引用——引用变量(这一概念)

使用new建立类的实例正确的方法
Form MyForm; //声明引用变量
MyForm = new Form();//用引用变量新创建实例
MyForm.Text = “my form”;
MyForm.ShowDialog();

  • 引用变量与实例的关系(利用孩子和气球进行理解)
    1.孩子与气球(孩子——引用变量,气球——实例)
    小孩牵着气球,通过赋值等号(=)
    2.孩子和气球的关系
    (1)有气球,无孩子牵(气球会飞,对应程序内存被回收掉)
    (2)有小朋友不牵气球
    (3)多个孩子可以各用孩子牵同一气球
Form myForm1;
Form myForm2;
myForm1 = new Form();
myForm2 = myForm2;
myForm1.Text = "My Form";
myForm2.ShowDialog();

(4)多个孩子,用同一个绳子引用实例,牵同一个气球——以后的ref。

四、类的三大成员

  • 属性(property):储存数据(方便记忆),组合起来表示类或者对象当前的状态。
    《C#语言入门详解》学习笔记2——类、对象、成员简介_第1张图片
  • 方法(method):由C语言中的函数(function)进化而来,表示类或对象能做什么。
    工作中90%的时间都是在与方法打交道,他是真正做事、构成逻辑的成员(逻辑也叫做算法)

程序 = 数据(属性) + 算法(方法)

  • 事件(event):类或对象通知其他类或对象的机制,C#特有
    善用事件很重要,一定不要滥用
    MSDN文档使用(视频P4,32分钟)
  • 不同类侧重点不同,特殊类或对象在成员方面侧重不同

模型类或对象重在属性,如:Entity,Framework
工具类或对象重在方法,如:Math,Console
通知类或对象重在事件,如各种timer
(例子在P4 41分钟)
Event 示例。用 DispatcherTimer 写了个时钟。


using System.Windows.Threading;

namespace WpfApp1
{
    /// 
    /// MainWindow.xaml 的交互逻辑
    /// 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromSeconds(1);//触发事件间隔时间
            timer.Tick += Timer_Tick;                //写完+=后连按两下tab健,函数挂接在事件上,当事件触发时,方法执行
            timer.Start();                           //时钟使能
        }

        private void Timer_Tick(object sender, EventArgs e)
        {
            this.timeTextBox.Text = DateTime.Now.ToString();
        }
    }
}

注意事项:TextBox名字要与事件构造器中的一致,新建完文本框之后,不要双击进入MainWindow.xaml.cs中。否则会报错
结果:
《C#语言入门详解》学习笔记2——类、对象、成员简介_第2张图片

五、静态成员与实例成员

  • 摘要
    静态(static)成员在语义上表示它是“类的成员”
    实例(非静态)成员在语义上表示它是“对象的成员”
    绑定(binding)指的是编译器把一个成员与类或对象关联起来(通过“.”——成员访问操作符)
  • 静态:物体固有的,指的是类与生俱来的,只要类抽象出来了,在语义上就拥有的成员

例:人——抽象为——human类具有静态成员(“总数”,“增长”)
“总数”与“增长”成员,对类有意义,并属于该类,不属于某个具体对象

  • 实例成员:所有非静态的成员,在语义上表示成员属于某个对象,而不是类。

人(实例成员):身高、体重
人类(静态成员):平均身高、平均体重
一定注意区分

Console.WriteLine("Hello");  //直接访问类,为静态方法。

Form form = new Form();
form.Text = "Hello";   //访问实例的方法属性为实例成员。
form.ShowDialog();     //实例方法

  • 在MSDN文档中,有大写红色S说明为静态成员。

你可能感兴趣的:(《C#语言入门详解》学习笔记2——类、对象、成员简介)