1,靜態方法和非靜態方法的區別: 例子1: (1)靜態方法 namespace 靜態方法 { class Program { public static int Add(int x, int y) //聲明一個靜態方法 { return x + y; } static void Main(string[] args) { Console.WriteLine("學敏,咱們的計算結果是: " + Program.Add(2, 4)); //使用類名調用靜態方法 } } } 運行結果: (2)非靜態方法 namespace 非靜態方法 { class Program { public int Add(int x, int y) //聲明一個非靜態方法 { return x + y; } static void Main(string[] args) { Program xuemin = new Program(); //實例化類Program Console.WriteLine("學敏,計算結果為 " + xuemin.Add(2, 4)); //使用實例化對象xuemin調用定義的非靜態方法 } } } 運行結果: 2,方法重載和方法重寫的不同: 例子2: (1)方法重載 namespace 方法重載 { class Program { public static int Add(int x, int y) //定義靜態方法Add,返回值為int類型,兩個int類型參數 { return x + y; } public double Add(int x, double y) //方法Add,兩個參數,一個double類型,一個int類型 { return x + y; } public int Add(int x, int y, int z) //方法Add,三個參數,均為int類型 { return x + y + z; } static void Main(string[] args) { Program xuemin = new Program(); int x=3; int y1=4; double y2 = 3.2; int z=5; Console.WriteLine("學敏,以下是計算結果,請注意查收!!"+"\n"); //根據傳入的參數類型和個數的不同調用不同的Add重載方法 Console .WriteLine ("x"+"+"+"y1"+"="+Program .Add (x ,y1 )); Console .WriteLine ("x"+"+"+"y2"+"="+xuemin .Add (x ,y2 )); Console .WriteLine ("x"+"+"+"y1"+"+"+"z"+"="+xuemin .Add (x ,y1,z )); } } } 運行結果: (2)方法重寫 見例子3就有方法重寫 3,通過例子3能掌握: 1,抽象類不能直接實例化,抽象類如何實例化?—先實例化派生類,然後使用派生類對象實例化抽象類 2,抽象類和抽象類的使用: 例子3:聲明一個抽象類myClass,該抽象類中聲明了兩個屬性和一個方法,其中為兩個屬性提供了具體實現,方法為抽象方法。然後聲明一個派生類DriveClass,繼承自myClass,在DriveClass派生類中重寫myClass中的抽象方法,並提供具體實現。最後在主程序類Program的Main方法中實例化DriveClass派生類的一個對象,使用該對象實例化抽象類,並使用抽象類對象訪問抽象類中的屬性和派生類中重寫的方法。 namespace 抽象類和抽象方法的使用 { abstract class myClass //聲明一個抽象類myClass { string id; string name; public string ID //編號屬性ID { get { return id; } set { id = value; } } public string Name //姓名屬性Name { get { return name; } set { name = value; } } public abstract void ShowInfo(); //聲明一個抽象方法ShowInfo } class DriveClass : myClass //聲明一個派生類DriveClass,派生自類myClass { public override void ShowInfo() //派生類DriveClass重寫基類myClass中的抽象方法ShowInfo { Console.WriteLine(ID + " " + Name); } } class Program { static void Main(string[] args) { DriveClass driveclass = new DriveClass(); //實例化派生類DriveClass myClass xuemin = driveclass; //使用派生類對象driveclass來實例化抽象類 xuemin.ID = "廊坊師范學院001號"; xuemin.Name = "韓學敏"; xuemin.ShowInfo(); //抽象類對象調用派生類中的方法 Console.WriteLine("\n"); } } } 運行結果: 4,密封類和密封方法的使用 例子4: www.2cto.com namespace 密封類和密封方法 { class myClass1 //聲明類myClass1 { public virtual void ShowInfo() //虛方法ShowInfo { } } sealed class myClass2:myClass1 //聲明密封類myClass2,並且繼承自myClass1 { string id=" "; string name=" "; public string ID //編號屬性ID { get { return id ;} set {id =value ;} } public string Name //姓名屬性Name { get { return name ;} set {name =value ;} } public sealed override void ShowInfo() //密封並重寫基類myClass1中的ShowInfo方法 { Console.WriteLine(ID + " " + Name); } } class Program { static void Main(string[] args) { Console.WriteLine("學敏,調用ShowInfo方法後的結果: "+"\n"); myClass2 xuemin = new myClass2(); //實例化密封類myClass2 xuemin .ID ="廊坊師范學院001號"; xuemin.Name ="韓學敏"; xuemin.ShowInfo(); //調用密封類myClass2中的密封方法 myClass2 xueyang = new myClass2(); xueyang.ID = "廊坊師范學院002號"; xueyang.Name = "韓學楊"; xueyang.ShowInfo(); } } } 運行結果: