在意派建設(shè)好網(wǎng)站后wordpress 提示插件
鶴壁市浩天電氣有限公司
2026/01/24 12:23:34
在意派建設(shè)好網(wǎng)站后,wordpress 提示插件,好的用戶體驗網(wǎng)站 學(xué)校,win8風(fēng)格網(wǎng)站 源碼一、多態(tài)前言#xff1a;多態(tài):同一個方法不同形態(tài)體現(xiàn)#xff0c;多態(tài)分靜態(tài)多態(tài)和動態(tài)的多態(tài)靜態(tài)多態(tài):函數(shù)重載和符號重載動態(tài)多態(tài)#xff1a;抽象和虛方法靜態(tài)多態(tài)1.多態(tài)之函數(shù)重載函數(shù)重載#xff1a;在同一個范圍內(nèi)#xff0c;函數(shù)名一樣#xff0c;參數(shù)的類型不一樣…一、多態(tài)前言多態(tài):同一個方法不同形態(tài)體現(xiàn)多態(tài)分靜態(tài)多態(tài)和動態(tài)的多態(tài)靜態(tài)多態(tài):函數(shù)重載和符號重載動態(tài)多態(tài)抽象和虛方法靜態(tài)多態(tài)1.多態(tài)之函數(shù)重載函數(shù)重載在同一個范圍內(nèi)函數(shù)名一樣參數(shù)的類型不一樣、參數(shù)的個數(shù)不一樣這樣函數(shù)就是重載僅僅只有返回值類型不一樣不屬于函數(shù)的重載例class People { //構(gòu)造函數(shù)重載 public People() { Console.WriteLine(不帶參數(shù)的構(gòu)造函數(shù)); } public People(int a) { Console.WriteLine(帶一個整型參數(shù)的構(gòu)造函數(shù)); } public People(string a) { Console.WriteLine(帶一個字符串參數(shù)的構(gòu)造函數(shù)); } public People(string a,int b) { Console.WriteLine(帶2個參數(shù)的構(gòu)造函數(shù)); } public void Eat() { Console.WriteLine(中文吃飯); } public void Eat(string a) { Console.WriteLine(中文吃a); } public void Eat(string a,int count) { Console.WriteLine(中文吃 a); } }new People(); new People(10); new People(11); new People().Eat(); new People().Eat(biangbiang面); new People().Eat(豆豉糖); Console.ReadKey();2.多態(tài)之符號重載符號重載把常用的算術(shù)運算符號、邏輯運算符號按照自己的定義方式進行運算 能夠使對象進行運算 例如可以計算倆個數(shù)字相加 101020如果想實現(xiàn)倆個對象相加 可以通過符號重載實現(xiàn)class Shape { public int X { get; set; }//長 public int Y { get; set; } //寬 public int Z { get; set; }// 高 public Shape() { } public Shape(int x, int y, int z) { this.X x; this.Y y; this.Z z; } //重載 讓倆個對象相加計算倆個對象體積相加的結(jié)果 //符號重載定義成靜態(tài)的方法 在符號前面添加operator關(guān)鍵字 public static int operator (Shape s1, Shape s2) { //s1.X*s1.Y*s1.Z s1的體積 //s2.X * s2.Y * s2.Z s2的體積 return s1.X * s1.Y * s1.Z s2.X * s2.Y * s2.Z; } // 倆個對象相減返回一個對象對象屬性值為倆個對象屬性的差值 //s1- s2 s3(0,0,0) //s1:10 20 30 //s2:10 20 30 public static Shape operator -(Shape s1, Shape s2) { Shape s3 new Shape(); s3.X Math.Abs(s1.X - s2.X); s3.Y Math.Abs(s1.Y - s2.Y); s3.Z Math.Abs(s1.Z - s2.Z); return s3; } //重載符號 //s1(10 ,20 ,30) s1 s1(11,21,31) public static Shape operator (Shape s1) { Shape s3 new Shape(); s3.X s1.X; s3.Y s1.Y; s3.Z s1.Z; return s3; } // 重載一個符號 public static bool operator (Shape s1, Shape s2) { return s1.X * s1.Y * s1.Z s2.X * s2.Y * s2.Z; } public static bool operator (Shape s1, Shape s2) { return s1.X * s1.Y * s1.Z s2.X * s2.Y * s2.Z; } //重載號 public static bool operator (Shape s1,Shape s2) { return s1.X* s1.Y* s1.Z s2.X * s2.Y * s2.Z; } //重載!號 public static bool operator !(Shape s1, Shape s2) { return s1.X * s1.Y * s1.Z ! s2.X * s2.Y * s2.Z; }Shape p1 new Shape(100,200,300); Shape p2 new Shape(10,20,30); Console.WriteLine(p1p2);// 允許倆個Shape對象相加 重載 Console.WriteLine(1020);//30 Console.WriteLine((p1-p2).X----- (p1 - p2).Y-------- (p1 - p2).Z); //重載- Console.WriteLine((p1).X ----- (p1).Y -------- (p1).Z); //重載 Console.WriteLine(p1p2);//true 重載 Console.WriteLine(p1p2);//false 重載 Console.WriteLine(p1p2);//false Console.WriteLine(p1!p2); //true ! Console.ReadKey();動態(tài)多態(tài)1.動態(tài)多態(tài)表現(xiàn):抽象動態(tài)多態(tài)表現(xiàn):抽象抽象類用于提供類的部分成員實現(xiàn)包含抽象方法也可以普通的方法如果是抽象方法不用去實現(xiàn)誰繼承這個抽象類誰去實現(xiàn)抽象方法抽象類里面也可以定義抽象成員 如果是抽象成員需要在派生類去實現(xiàn)成員//定義抽象類 public abstract class People{} public abstract class People { public int Age { get; set; } 10;// 普通的屬性 //public abstract string Name { get; set; } 上海一女子單身46死亡了 遺產(chǎn)幾百萬被當?shù)孛裾譀]收墓地費需要表弟承擔; // 抽象屬性 不能賦值 public abstract string Name { get; set; } //普通方法可以正常定義和實現(xiàn) public void Eat() { Console.WriteLine(吃相難看); } //抽象方法不能有方法體 不能加{} public abstract void SayHello(int a) ; } //在子類實現(xiàn)抽象成員 public class China : People { //需要重寫抽象成員和抽象方法 //重寫關(guān)鍵字 override public override string Name { get; set; } 博物館火了; //重寫抽象方法 public override void SayHello(int a) { Console.WriteLine(你好 吃了么); } } public class Japan : People { public override string Name { get; set; } 首相; public override void SayHello(int a) { Console.WriteLine(こんにちは (Konnichiwa)); // ??????發(fā)音sa - wàt - dii // ?????An-nyeong-ha-se-yo } }//定義抽象類 public abstract class People{} //定義抽象方法 public abstract void SayHello(int a) ; //派生類實現(xiàn)的時候添加override關(guān)鍵字 public override void SayHello(int a) { Console.WriteLine(你好 吃了么); } China china new China(); china.Age 10;//繼承過來的普通屬性 china.Name ss;//調(diào)用子類的實現(xiàn)的抽象成員 china.SayHello(10);//調(diào)用子類的實現(xiàn)的抽象方法 china.Eat();//繼承過來的普通方法 Japan japan new Japan(); japan.SayHello(10); // 調(diào)用子類的實現(xiàn)的抽象方法 japan.Eat();// 繼承過來的普通方法2.動態(tài)多態(tài)表現(xiàn)虛方法抽象方法和虛方法的區(qū)別* 1 抽象成員和抽象方法只能定義抽象類里面 但是虛方法和虛成員可以定義普通類里面* 2 抽象方法和抽象成員在抽象類不能實現(xiàn) 但是虛方法和虛成員可以定義普通類里面可以實現(xiàn)* 3 抽象方法和抽象成員在派生類必須實現(xiàn) 但是虛方法和虛成員可以不用在派生類實現(xiàn)* 4 可以使用overrid重寫基類的抽象方法或者虛方法public class People { public virtual int A { get; set; } 10; public string Name { get; set; } // 普通屬性 //public abstract int Age { get; set; }// 抽象成員不能定義在普通類中 //public abstract void Eat(); //抽象方法不能定義在普通類中 public virtual void Eat() //添加virtual關(guān)鍵字 使方法變成虛方法虛方法可以定義普通類中,并且可以實現(xiàn)。 { Console.WriteLine(Peoplel的eat方法); } } public class HanGuo : People { //通過重寫override基類虛方法 public override void Eat() { Console.WriteLine(韓國吃泡菜); } } public class YinDu:People { //new 新建一個eat方法和基類eat的方法沒有任何關(guān)系 public new void Eat() { Console.WriteLine(印度人吃咖喱); } }HanGuo h1 new HanGuo(); h1.Name 金喜善; h1.Eat(); YinDu yd new YinDu(); yd.Name 阿三; yd.Eat(); Console.ReadKey();二、密封類和靜態(tài)類static void Main(string[] args) { // 密封類的使用 A a new A(); a.Name 好; a.Eat(); // 靜態(tài)類的使用 B.Age 10; B.Eat(); //static class靜態(tài)類添加靜態(tài)成員不能new 實例化 //sealed class 密封類特點不能被繼承 Console.ReadKey(); } } //抽象類被繼承 // sealed 密封類特點不能被繼承 public sealed class A { public string Name { get; set; } public void Eat() { Console.WriteLine(eat); } //密封類不允許被繼承的虛方法設(shè)計目的就是為了在子類重寫這個虛方法倆者設(shè)計理念違背了 //public virtual void Eat2() //{ // Console.WriteLine(aa1); //} } //class B :A{ } 特點不能被繼承 //靜態(tài)類添加靜態(tài)成員不能new 實例化 static class B { public static int Age { get; set; } public static void Eat() { Console.WriteLine(111); } }三、總結(jié)/*1 函數(shù)重載:方法名相同、參數(shù)個數(shù)不一樣或者參數(shù)類型不一樣*2 符號重載 public static void operator (People p1) {}*3 抽象類* public abstract class People{* public abstract void Eat(); //不用添加方法體* public abstract int Age{get;set;}//抽象成員** }* class APeople* { 重寫抽象屬性和方法* public override void Eat(){}* }* 4 虛方法* class People* {* public virtual void Eat(){} 可以定義普通方法 并且可以實現(xiàn)}* class APeople* {// 虛方法可以不用在子類實現(xiàn) 使用override、new}** 5 密封和靜態(tài)*/