C#每日一課(三十五)

面向對象編程概述
面向對象編程(OOP),是把現實中的事物進行抽象化,其設計的重點就是對類進行設計。

  • 什麼是類和對象
    類,它實際上是一種複雜的數據類型,在這個複雜的類型當中有數據和與這些數據相關的操作封裝在一起。
    對象,就是在有了類之後對這些抽象化的類進行具體化,就行成了對象,也就是說對象是指類的實例。比如:學生,它是一個抽象的類,具體到某個人如:張三,他就是一個對象。
    如下例,創建一個學生類Student
public class Student
{
	public string StudentNo	//學號
	{
		get
		{
			return "";
		}
	}
	public int StudentAge	//年齡
	{
		get
		{
			return 0;
		}
	}
	public string StudentGrade	//年級
	{
		get
		{
			return "";
		}
	}
}
//把這個類實例化出一個對象
Student zhangsan = new Student();

使用Visual Studio新建C#控制檯應用程序
1.在生成的工程中新增一個Student類

class Student
    {
        private string no;
        private int age;
        private string grade;
        //學號
        public string StudentNo 
        {
            get
            {
                return no;
            }
            set
            {
                no = value;
            }
        }
        //年齡
        public int StudentAge
        {
            get
            {
                return age;
            }
            set
            {
                age = value;
            }
        }
        //年級
        public string StudentGrade
        {
            get
            {
                return grade;
            }
            set
            {
                grade = value;
            }
        }
		
		public void Show()
        {
            Console.WriteLine("學號:" + no + ";" + "年齡:" + age + "年級:" + grade );
        }
    }

在上面的類定義中,使用了get{}和set{},這是類的訪問器,其中get表示讀取,set表示寫入。如果某個成員只可讀取則不需要set語句。
注意:set語句中有個關鍵字value,用來表示賦給成員的值。
2.在Main方法中加入如下代碼時行測試:

Student stu = new Student();
stu.StudentNo = "00001";
stu.StudentAge = 18;
stu.StudentGrade = "Grade3";
stu.Show();
Console.ReadKey();

編譯運行後的結果:
運行結果

  • 如何理解面向對象編程
    面向對象編程,簡稱OOP。通過給程序中加入擴展語句,把函數“封裝”進編程所必須的“對象”當中,使得複雜的工作條理更清晰、編寫更容易。
    面向對象編程達到了軟件工程的三個主要目標
    1.重用性
    2.靈活性
    3.擴展性
    面向對象編程的基本思想中使用了對象、類、繼承、封裝、多態等來進行程序開發
    面向對象編程的本質是以對象爲中心,編寫可重複利用、方便擴展的代碼
    面向對象編程的一個標準過程
    運行結果

  • 面嚮對象的技術
    面向對象的關鍵技術是:對象、類、接口、繼承、多態
    對象與類的相關知識上面已做介紹,下面介紹接口、繼承和多態。

  • 接口
    接口中只包含了成員的定義,不包含成員的具體實現。
    這裏指的成員有:方法、屬性、索引器、事件……
    設計接口的目的是爲不相關的類提供通用的屬性,打個比方,學生類、教師類,可以爲它們設計一個接口人類,這個人類中提供了學生類和教師類的通用屬性。
    在C#中的接口如:IDbConnection用來定義數據源的連接,它提供了多個未實現的屬性和方法。開發者可以自定義兩個不同的類sqlconnection、AccessConnection並繼承自IDbConnection接口。這個時候這兩個類就具備了相同的成員,但各自去實現接口中未實現的屬性和方法。
    下面代碼說明了一個簡單的接口定義

interface Iconnection
{
	public string DatabaseName;	//數據庫名稱
	public void AddDataBase();	//添加數據
	public string GetConn();	//獲取數據庫連接
}

接口就像是一個模板,提供了基本成員的結構,但並沒有添加任何實質性的內容。注意:C#不能實現多個類的繼承,而可以實現多個接口的繼承,所以 使用接口是可以讓一個類具備兩個以上基類的唯一途徑。
作用Visual Studio新增C#控制檯應用程序
1.新增一個接口 Person

public interface Person
    {
        string Name
        {
            get;
        }
        void ToDo();
    }

2.新增一個類Student繼承自這個接口,並在Main方法中實例化Student類並調用接口中定義的方法

class Student : Person
    {
        public string Name { get; set; }

        public void ToDo()
        {
            Console.WriteLine(Name + "是學生,學習!");
        }
        static void Main(string[] args)
        {
            Student stu = new Student();
            stu.Name = "謝聲";
            stu.ToDo();
            Console.ReadKey();
        }
    }

編譯運行的結果如下:
運行結果

  • 繼承
    繼承就是從父類中獲取一些公開的成員,如方法和屬性。
    語法如下
//繼承類
class Student : Person
//繼承接口
class Student : Interface

子類與父類之間使用“:”這個符號進行相隔,C#中只允許繼承一個父類,但允許繼承多個接口。如果子類繼承了接口,那麼子類必須要實現接口中定義的所有公開成員。

  • 多態
    多態是指類可以有多種形態,通過修改可以形成多種不同的實現方法。當子類從父類繼承時,它會獲得父類中的所有方法、字段、屬性和事件,如果在子類中要更改父親類的數據和行爲,通常有兩種選擇:
    1.創建新的成員替換父類成員,創建成員的時候使用new 關鍵字
    2.可以重寫虛擬的父類成員
    方法一:替換父類成員
class ParentClass
{
	public string GetName()
	{
		return "父類名稱";
	}
}
class SonClass : ParentClass
{
	public new string GetName()
	{
		return "子類名稱";
	}
}

方法二:重寫虛擬的父級成員,父類在員使用關鍵字virtual,子類中成員使用關鍵字override

class ParentClass
    {
        public virtual string GetName()
        {
            return "父類名稱";
        }
    }
    class SonClass : ParentClass
    {
        public override string GetName()
        {
            return "子類名稱";
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章