日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#基础系列第五篇

發(fā)布時間:2023/12/13 C# 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#基础系列第五篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言: 完全是我在學(xué)習(xí)過程中記錄的筆記,只不過分享一下讓很多剛開始學(xué)習(xí).net編程的人能夠很快的學(xué)會C#語言

  • 多態(tài)的一些說明
  • ?(1) 多態(tài)就是為了程序的可擴展性

    ?(2)多態(tài)的使用:將不同的對象當作父類來看,屏蔽掉各個對象間的不同,寫出通用代碼,做出通用編程,同樣調(diào)用不同結(jié)果,以適應(yīng)需求的不斷變化

    ?(3)ToString方法有Object提供,使得所有的類型均可以使用Console.WriteLine()方法

    ??????????? class Person

    ??????????? {

    ?????????????????? public string Name { get; set; }

    ?????????????????? public int Age { get; set; }

    ?????????????????? //當寫第三個的時候?qū)懭胂旅娴姆椒?/p>

    ?????????????????? public override string ToString()

    ?????????????????? {

    ????????????????????????? return Name;

    ?????????????????? }

    ??????????? }

    ??????????? class Program

    ??????????? {

    ?????????????????? static void Main(string[] args)

    ?????????????????? {

    ????????????????????????? int[] nums = { 1, 34, 4, 65, 7, 87, 454 };

    ????????????????????????? Console.WriteLine(nums);

    ????????????????????????? //輸出:System.Int32[]

    ????????????????????????? //準備對象

    ????????????????????????? Person p = new Person();

    ????????????????????????? p.Name = "韓迎龍";

    ????????????????????????? p.Age = 19;

    ????????????????????????? Console.WriteLine(p);

    ????????????????????????? //輸出:智能機器.Person

    ????????????????????????? //第三個

    ????????????????????????? Person p1 = new Person();

    ????????????????????????? p1.Name = "韓迎龍";

    ????????????????????????? p1.Age = 19;

    ????????????????????????? Console.WriteLine(p);

    ????????????????????????? //輸出張三

    ????????????????????????? Console.ReadKey();

    ?????????????????? }

    ??????????? }

    ?(4)多態(tài)的保障

    ??????????? 1)繼承,相同名字的方法(重載不算)

    ??????????? 2)里氏轉(zhuǎn)換原則

    ?(5)is和as

    ??????????? 1)判斷父類繼承

    ??????????? 2)判斷接口實現(xiàn)

    ??????????? 3)判斷拆箱和裝箱

      2.多態(tài)實現(xiàn)計算器

    (1) 新建一個控制臺應(yīng)用程序,起名為多態(tài)計算器(2)添加一個CalculstingWay類,表示計算的方法/// <summary>/// 計算機的計算/// </summary>class CalculstingWay{int num1;int num2;public int Num1{get { return num1; }set { num1 = value; }}public int Num2{get { return num2; }set { num2 = value; }}public CalculstingWay(int n1, int n2){num1 = n1;num2 = n2;}public virtual int Calculating(){//這個方法是需要子類重寫的return 0;}}(3)添加一個Add類,表示實現(xiàn)加法的計算/// <summary>/// 提供加法計算的方法/// </summary>class Add:CalculstingWay{public Add(int n1, int n2): base(n1, n2){}public override int Calculating(){return base.Num1 + base.Num2;}} (4)添加一個Sub類,表示實現(xiàn)減法的計算/// <summary>/// 提供減法計算的方法/// </summary>class Sub : CalculstingWay{public Sub(int n1, int n2): base(n1, n2){}public override int Calculating(){return base.Num1 - base.Num2;}} (5)添加一個Multi類,表示實現(xiàn)乘法的計算/// <summary>/// 提供乘法計算的方法/// </summary>class Multi : CalculstingWay{public Multi(int n1, int n2): base(n1, n2){}public override int Calculating(){return base.Num1 + base.Num2;}} (6)添加一個Div類,表示實現(xiàn)除法的計算/// <summary>/// 提供除法計算的方法/// </summary>class Div : CalculstingWay{public Div(int n1, int n2): base(n1, n2){}public override int Calculating(){return base.Num1 + base.Num2;}}
    (7)添加一個Calculator類,表示計算器類/// <summary>/// 表示計算器/// </summary>class Calculator{//可以進行計算的對象CalculstingWay cal;public Calculator(int num1, int num2, string oper){switch (oper){case "+":cal = new Add(num1, num2);break;case "-":cal = new Sub(num1, num2);break;case "*":cal = new Multi(num1, num2);break;case "/":cal = new Div(num1, num2);break;default:cal = null;break;}}public int jisuan(){if (cal != null){return cal.Calculating();}else{return -1;}}}

      3.?抽象方法

    ?(1) 父類提供一個可以被重寫的方法,有子類重寫,通過父類,new子類來調(diào)用

    ?(2)父類不需要方法體

    ?(3)語法:[public] abstract 返回類型 方法名(參數(shù));

    ?????????????????? 和方法相比有以下幾點需要注意的:

    ?????????????????? 1)去掉方法體,直接在圓括號結(jié)束的時候加分號

    ?????????????????? 2)加上abstract進行修飾

    ?(4)抽象方法只允許在抽象類中存在

    ??????????? 1)只要在class關(guān)鍵字前面用abstract修飾即可

    ?????????????????? abstract class 類名

    ?????????????????? {

    ????????????????????????? //成員

    ?????????????????? }

    (5)抽象方法,抽象類就是為了被子類繼承,重寫的

    abstract class Animal{public abstract void Shout();}class Dog : Animal{public override void Shout(){Console.WriteLine("財旺福王運道旺");}}class Cat : Animal{public override void Shout(){Console.WriteLine("喵喵喵");}}class Program{static void Main(string[] args){Animal[] animals = {new Dog(),new Cat() };for (int i = 0; i < animals.Length; i++){animals[i].Shout();}Console.ReadKey();}}

    ?(6)抽象方法的細節(jié)

    ??????????? 1)抽象類中可以包含什么東西?

    ?????????????????? ->比一般類多了抽象成員

    ?????????????????? ->抽象成員有有什么:方法,屬性,索引器,事件聲明

    ??????????? 2)抽象類不允許實例化,不能new

    ??????????? 3)抽象類可以有構(gòu)造方法

    ??????????? 4)抽象類可以來源于非抽象類

    ?????????????????? class MyBase

    ?????????????????? {

    ?????????????????? }

    ?????????????????? abstract class Test : MyBase

    ?????????????????? {

    ????????????????????????? public abstract void Func();

    ?????????????????? }

    ?????????????????? class MySub : Test

    ?????????????????? {

    ????????????????????????? public override void Func()

    ????????????????????????? {

    ???????????????????????????????? Console.WriteLine("抽象類可以來源于非抽象類");

    ????????????????????????? }

    ?????????????????? }

    ??????????? 5)抽象類必須被子類重寫,除非子類也是抽象的

    ?(7)練習(xí):有一個形狀Shape類,派生出圓Circle,矩形Rectangle和正方形Square,分別計算他們的面積Area和周長Perimeter?

    1)新建一個控制臺項目:起名為多態(tài)小案例2)添加一個Shape類,實現(xiàn)計算面積和周長的方法abstract class Shape{public abstract double GetArea();public abstract double GetPerimeter();}3)添加一個Circle類,實現(xiàn)計算圓的面積和周長class Circle : Shape{int r;public Circle(int r){this.r = r;}public override double GetArea(){return Math.PI * Math.Pow(r, 2);}public override double GetPerimeter(){return 2 * Math.PI * r;}}4)添加一個類,實現(xiàn)計算矩形的面積和周長class Rectangle : Shape{double widthX;double heightY;public Rectangle(double widthX, double heightY){this.widthX = widthX;this.heightY = heightY;}public override double GetArea(){return widthX * heightY;}public override double GetPerimeter(){return 2 * (widthX + heightY);}}5)添加一個類,實現(xiàn)計算正方形的面積和周長class Square : Shape{double length;public Square(double length){this.length = length;}public override double GetArea(){return Math.Pow(length, 2);}public override double GetPerimeter(){return 4 * length;}}class Square1 : Rectangle{public Square1(double length): base(length, length){}}6)在Main方法中實現(xiàn)的代碼如下:class Program{static void Main(string[] args){Circle circle = new Circle(5);Console.WriteLine(circle.GetArea().ToString("0.00"));Console.WriteLine(circle.GetPerimeter().ToString("0.00"));Rectangle rec = new Rectangle(5, 10);Console.WriteLine(rec.GetArea());Console.WriteLine(rec.GetPerimeter());Square square = new Square(5);Console.WriteLine(square.GetArea());Console.WriteLine(square.GetPerimeter());Square1 sqr = new Square1(5);Console.WriteLine(sqr.GetArea());Console.WriteLine(sqr.GetPerimeter());}}

    ?(8)抽象屬性

    ??????????? 1)使用abstract修飾

    ??????????? 2)去掉方法體

    ??????????? 3)語法:public abstract 返回類型 屬性

    ????????????????????????? {

    ???????????????????????????????? get;

    ???????????????????????????????? set;

    ????????????????????????? }

    ??????????? 4)自動屬性必須包含get,set方法

    ??????????? 5)抽象屬性可以定義只讀,只寫,

    ?(9)由子類實現(xiàn)抽象屬性的方法

    ??????????? 1)用override重寫屬性

    ??????????? 2)添加一個字段,使用屬性

  • 面向?qū)ο笥嬎闫?簡單工廠計算器)
  • (1) 新建一個控制臺應(yīng)用程序,起名為:簡單工廠計算器(最好寫成英文的,我是為了學(xué)習(xí)直接寫成中文的了) (2)新建一個CalculatingWay類,實現(xiàn)計算機的父類計算/// <summary>/// 計算機的計算/// </summary>abstract class CalculstingWay{int num1;int num2;public int Num1{get { return num1; }set { num1 = value; }}public int Num2{get { return num2; }set { num2 = value; }}public CalculstingWay(int n1, int n2){num1 = n1;num2 = n2;}public abstract int Calculating();}(3)新建一個Add類,/// <summary>/// 提供加法計算的方法/// </summary>class Add:CalculstingWay{public Add(int n1, int n2): base(n1, n2){}public override int Calculating(){return base.Num1 + base.Num2;}}(4)新建一個Sub類,/// <summary>/// 提供減法計算的方法/// </summary>class Sub : CalculstingWay{public Sub(int n1, int n2): base(n1, n2){}public override int Calculating(){return base.Num1 - base.Num2;}}(5)新建一個Multi類,/// <summary>/// 提供乘法計算的方法/// </summary>class Multi : CalculstingWay{public Multi(int n1, int n2): base(n1, n2){}public override int Calculating(){return base.Num1 + base.Num2;}} (6)新建一個Div類,/// <summary>/// 提供除法計算的方法/// </summary>class Div : CalculstingWay{public Div(int n1, int n2): base(n1, n2){}public override int Calculating(){return base.Num1 + base.Num2;}} (7)新建一個Factory類static class Factory{public static CalculstingWay GetCalculator(int n1,int n2,string oper){switch (oper){case "+":return new Add(n1, n2);case "-":return new Sub(n1, n2);case "*":return new Multi(n1, n2);case "/":return new Div(n1, n2);default:return null;}}} (8)在Main方法中寫入如下這段代碼:class Program{static void Main(string[] args){//提示用戶輸入Console.Write("請用戶輸入第一個數(shù)字:");int num1 = GetInputNum();Console.Write("請用戶輸入第一個數(shù)字:");int num2 = GetInputNum();Console.Write("請輸入運算符");string oper = Console.ReadLine();//開始生產(chǎn)CalculstingWay cal = Factory.GetCalculator(num1, num2, oper);//開始投入使用if (cal != null){int res = cal.Calculating();Console.WriteLine("{0}{1}{2}={3}", num1, oper, num2, res);}else{Console.WriteLine("運算符有誤");}}public static int GetInputNum(){return GetInputNum(int.MinValue, int.MaxValue);}/// <summary>/// 完成int類型數(shù)據(jù)的輸入,并返回,要求輸入的數(shù)字在0到給定的數(shù)字之間/// </summary>/// <param name="max">給定的數(shù)字的上限</param>/// <returns></returns>public static int GetInputNum(int max){return GetInputNum(0, max);}/// <summary>/// 完成int數(shù)字的輸入,要求在給定范圍之間/// </summary>/// <param name="min">給定范圍的下線</param>/// <param name="max">給定范圍的上線</param>/// <returns></returns>public static int GetInputNum(int min, int max){string str = Console.ReadLine();int num;while (true){try{num = Convert.ToInt32(str);if (num > min && num < max){break;}Console.Write("輸入數(shù)字不再{0}到{1}之間,請重新輸入", min, max);str = Console.ReadLine();}catch{Console.Write("輸入有誤,請重新輸入");str = Console.ReadLine();}}return num;}}

    轉(zhuǎn)載于:https://www.cnblogs.com/hanyinglong/archive/2012/10/02/2710298.html

    總結(jié)

    以上是生活随笔為你收集整理的C#基础系列第五篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。