溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在C#項(xiàng)目中使用繼承

發(fā)布時(shí)間:2021-05-24 15:56:40 來(lái)源:億速云 閱讀:214 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

如何在C#項(xiàng)目中使用繼承?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

聲明一個(gè)抽象類(lèi)

//基類(lèi)
    abstract class Shape
    {
        //抽象方法 計(jì)算面積
        public abstract double ComputerArea();

    }

聲明子類(lèi)

//子類(lèi) 繼承Shape 實(shí)現(xiàn)抽象方法
    class Circle : Shape
    {
        private double _radius;

        //構(gòu)造函數(shù)
        public Circle(double radius) => _radius = radius;

        //實(shí)現(xiàn)抽象方法
        public override double ComputerArea()
        {
            return _radius * _radius * Math.PI;
        }
    }

    //子類(lèi) 繼承Shape 實(shí)現(xiàn)抽象方法
    class Rectangle : Shape
    {

        private double _width;

        private double _height;

        //構(gòu)造函數(shù)
        public Rectangle(double width, double height)
        {
            _width = width;
            _height = height;
        }
        //實(shí)現(xiàn)抽象方法
        public override double ComputerArea()
        {
            return _width * _height;
        }
    }

    //子類(lèi) 繼承Shape 實(shí)現(xiàn)抽象方法
    class Triangle : Shape
    {

        private double _bottom;

        private double _height;

        //構(gòu)造函數(shù)
        public Triangle(double bottom, double height)
        {
            _bottom = bottom;
            _height = height;
        }
        //實(shí)現(xiàn)抽象方法
        public override double ComputerArea()
        {
            return _bottom * _height / 2;
        }
    }

聲明計(jì)算類(lèi)

//計(jì)算類(lèi)
    class Calculate
    {
        //傳入一個(gè)父類(lèi)作為參數(shù),調(diào)用方法
        public void Calc(Shape shape)
        {

            Console.WriteLine($"{shape.GetType().Name}的面積:{shape.ComputerArea()}");
        }
    }

測(cè)試

class Program
    {
        static void Main(string[] args)
        {
            var circle = new Circle(5);
            var rect = new Rectangle(5, 10);
            var triangle = new Triangle(6, 8);

            var calc = new Calculate();

            calc.Calc(circle);
            calc.Calc(rect);
            calc.Calc(triangle);
        }
    }

運(yùn)行結(jié)果

如何在C#項(xiàng)目中使用繼承

實(shí)際上 如果是只有這個(gè)方法要實(shí)現(xiàn)的話,繼承接口也是可以的!

實(shí)例擴(kuò)展:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


/**
 * 假設(shè)我們公司有兩種程序員:
 * java程序員指的是用java語(yǔ)法寫(xiě)程序的程序員,用Jpro這個(gè)類(lèi)表示;
 * C#程序員指的是用C#語(yǔ)法寫(xiě)程序的程序員,用Cpro這個(gè)類(lèi)來(lái)表示。
 * 每個(gè)類(lèi)都有一個(gè)WriteCode()方法。
 * 都屬于程序員,用Programmer這個(gè)類(lèi)表示。
 * 現(xiàn)在公司來(lái)了一個(gè)項(xiàng)目,要求派某個(gè)程序員寫(xiě)一個(gè)程序。
 */
namespace inheritApplication
{
  //程序員類(lèi)(基類(lèi))
  class Programmer
  {
    public string name = "我是程序員";
  }
  //java程序員類(lèi)
  class Jpro 
  {
    public string name = "java程序員";
    public string language = "我用java語(yǔ)法寫(xiě)代碼";
  }
  //C程序員類(lèi)
  class Cpro 
  {
    public string name = "C#程序員";
    public string language = "我用C#語(yǔ)法寫(xiě)代碼";
  }
  //編寫(xiě)項(xiàng)目類(lèi)
  class Pro : Programmer //繼承基類(lèi)
  {
    public void WriteProgram(Jpro program) //繼承java程序員類(lèi)
    {
      Console.WriteLine("" + program.name + ":" + name + "," + program.language + "");
    }
    public void WriteProgram(Cpro program)
    {
      Console.WriteLine("" + program.name + ":" + name + "," + program.language + "");
    }
  }
  //主程序
  class Program
  {
    static void Main(string[] args)
    {
      Pro p = new Pro();
      Jpro p1 = new Jpro();
      p.WriteProgram(p1);
      Cpro p2 = new Cpro();
      p.WriteProgram(p2);
      Console.ReadKey();
    }
  }
}

C#是什么

C#是一個(gè)簡(jiǎn)單、通用、面向?qū)ο蟮木幊陶Z(yǔ)言,它由微軟Microsoft開(kāi)發(fā),繼承了C和C++強(qiáng)大功能,并且去掉了一些它們的復(fù)雜特性,C#綜合了VB簡(jiǎn)單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性和便捷的面向組件編程從而成為.NET開(kāi)發(fā)的首選語(yǔ)言,但它不適用于編寫(xiě)時(shí)間急迫或性能非常高的代碼,因?yàn)镃#缺乏性能極高的應(yīng)用程序所需要的關(guān)鍵功能。

看完上述內(nèi)容,你們掌握如何在C#項(xiàng)目中使用繼承的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI