C# 学习 4 类与成员

类(Class)的概念:

类是对现实世界事务进行抽象所得到的结果
抽象的过程就是对现实世界建模的过程。
在软件世界里,实体和逻辑构成了整个软件系统

对象就是实例,是类经过实例化后得到的内存中的实体
举例:飞机和一架飞机的区别。飞机是一个概念(类),一架飞机是概念抽象出来的实例(对象)。
有些类(class)是不能实例化的,例如 数学 (Math class)。不能说是一个数学。

实例化的概念:

依照这个类的模子,创造一个对象。
就像之前举例的飞机,飞机是一个概念的东西,按照这个概念造一个飞机就是创造一个对象。

对象和实例的细微区别。
在讨论现实世界中的主要是类和对象,比如:拿飞机这个类创建一个(一架飞机)对象
研究程序世界的逻辑,特别是内存的关系。常用的就是类与实例。

如何实例化呢?

在C#中是用new操作符来创建实例的。
举例:
Form是微软自己从现实世界中抽象的一个类,放在了System.Windows.Forms里。
由于Form这个类(概念)自己是没法显示的,需要实例。

using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            (new Form()).ShowDialog();
        }
    }
}

这样就实例化了一个对象Form并显示出来。

引用变量和实例的关系

为什么会有引用变量这个概念?

如果我们想改Form的擡头,并且让其显示。我们用单纯实例化的方法做不到。
例如下面的例子,我们其实是实例化了两个Form,并不能实例化一个Form并对其进行多种操作

	(new Form()).Text = "Hello";
	(new Form()).ShowDialog();

引用变量就可以很好的解决这个问题。

            Form myForm;//创造一个Form的引用变量
            myForm = new Form(); //实例交给引用变量
            myForm.Text = "Hello";//
            myForm.ShowDialog();

引用变量和实例的关系
孩子气球。
孩子相当于引用变量,气球相当于实例
Form myform 相当于声明了一个孩子
new Form() 相当于声明了一个气球

=作为连接孩子和气球的绳子
如果不连上会被当成垃圾地址回收掉。
并且不同的孩子可以通过不同的绳子绑住一个气球
下面的的例子可以解释这一现象

            Form myForm1;//创造一个Form的引用变量
            Form myForm2;
            myForm1 = new Form(); //实例交给引用变量
            myForm2 = myForm1;
            myForm1.Text = "Hello";//
            myForm2.ShowDialog();

最终myForm2的窗体上的text是Hello,因为我们通过myForm1来改变了实例。

类的三大成员

属性
两个功能

  • 存储数据:eg飞机的高度以及速度
  • 表示当前类的状态:根据数据来判断飞机的起飞降落状态

方法

  • 能干什么。真正做事的
  • 算法

事件

  • 类或者对象通知其他类或者对象的机制
  • C#特有。
  • 善用事件机制非常重要

善用MSDN文档

例子1:以属性为侧重的类

利用EntityFramework(N个DLL包组成的用来完成特定功能的package)
学到后面来补充这个例子。

例子2:以方法为侧重的类

Math
在这里插入图片描述

例子3:以事件为侧重的类

时钟的例子
在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;

namespace WpfClock
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DispatcherTimer timer = new DispatcherTimer(); //实例化一个计时器的类
            timer.Interval = TimeSpan.FromSeconds(1); //设定间隔时间
            timer.Tick += Timer_Tick; //绑定timer_tick事件,每隔一秒获取现在的时间
            timer.Start(); //计时器开始
        }

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

静态成员和实例成员

静态成员:成员隶属于类,类与生俱来的成员。举例:human class 成员有 总数,增长 。但,不能说具体某个人的总数,增长。

实例成员:所有非静态的成员,成员属于某个对象的。 例如: 人 ,身高、体重
反映在静态成员上应该是平均身高,平均体重

下面例子可以解释:
在这里插入图片描述

绑定:编译器如何把一个成员与类或对象关联起来
解释:成员有的是和类关联的,有的是和类的对象关联的。绑定就是做这个的,来决定什么和类关联,什么和类的实例化对象关联。

早绑定:编译器编译类的时候,就已经知道这个成员到底隶属于类还是对象
晚绑定,编译器不管,直到程序运行时才由程序决定隶属于类还是对象

.操作符

成员访问操作符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章