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 成員有 總數,增長 。但,不能說具體某個人的總數,增長。

實例成員:所有非靜態的成員,成員屬於某個對象的。 例如: 人 ,身高、體重
反映在靜態成員上應該是平均身高,平均體重

下面例子可以解釋:
在這裏插入圖片描述

綁定:編譯器如何把一個成員與類或對象關聯起來
解釋:成員有的是和類關聯的,有的是和類的對象關聯的。綁定就是做這個的,來決定什麼和類關聯,什麼和類的實例化對象關聯。

早綁定:編譯器編譯類的時候,就已經知道這個成員到底隸屬於類還是對象
晚綁定,編譯器不管,直到程序運行時才由程序決定隸屬於類還是對象

.操作符

成員訪問操作符

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