關(guān)于C#繼承的簡(jiǎn)單應(yīng)用代碼分析
比如,現(xiàn)在有一些圖形,需要計(jì)算他們的面積,計(jì)算面積的方法都不一樣,可以這么做
聲明一個(gè)抽象類
//基類
abstract class Shape
{
//抽象方法 計(jì)算面積
public abstract double ComputerArea();
}
聲明子類
//子類 繼承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;
}
}
//子類 繼承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;
}
}
//子類 繼承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ì)算類
//計(jì)算類
class Calculate
{
//傳入一個(gè)父類作為參數(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é)果

實(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ǔ)法寫程序的程序員,用Jpro這個(gè)類表示;
* C#程序員指的是用C#語(yǔ)法寫程序的程序員,用Cpro這個(gè)類來(lái)表示。
* 每個(gè)類都有一個(gè)WriteCode()方法。
* 都屬于程序員,用Programmer這個(gè)類表示。
* 現(xiàn)在公司來(lái)了一個(gè)項(xiàng)目,要求派某個(gè)程序員寫一個(gè)程序。
*/
namespace inheritApplication
{
//程序員類(基類)
class Programmer
{
public string name = "我是程序員";
}
//java程序員類
class Jpro
{
public string name = "java程序員";
public string language = "我用java語(yǔ)法寫代碼";
}
//C程序員類
class Cpro
{
public string name = "C#程序員";
public string language = "我用C#語(yǔ)法寫代碼";
}
//編寫項(xiàng)目類
class Pro : Programmer //繼承基類
{
public void WriteProgram(Jpro program) //繼承java程序員類
{
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();
}
}
}
到此這篇關(guān)于關(guān)于C#繼承的簡(jiǎn)單應(yīng)用代碼分析的文章就介紹到這了,更多相關(guān)C#繼承的簡(jiǎn)單應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#進(jìn)行圖像處理的常見(jiàn)方法(Bitmap,BitmapData,IntPtr)使用詳解
這篇文章主要為大家詳細(xì)介紹了C#進(jìn)行圖像處理的幾個(gè)常見(jiàn)方法(Bitmap,BitmapData,IntPtr)具體使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-01-01
詳解C#中delegate/event/EventHandler/Action/Func的使用和區(qū)別
這篇文章主要為大家詳細(xì)介紹了C#中delegate、event、EventHandler、Action和Func的使用與區(qū)別,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-04-04
C# 鼠標(biāo)穿透窗體功能的實(shí)現(xiàn)方法
通過(guò)以下代碼,在窗體啟動(dòng)后調(diào)用方法SetPenetrate() 即可實(shí)現(xiàn)窗體的穿透功能,有需要的朋友可以參考一下2013-10-10
C#實(shí)現(xiàn)托盤程序并禁止多個(gè)應(yīng)用實(shí)例運(yùn)行的方法
這篇文章主要介紹了C#實(shí)現(xiàn)托盤程序并禁止多個(gè)應(yīng)用實(shí)例運(yùn)行的方法,涉及C#中NotifyIcon控件的使用及設(shè)置標(biāo)志位控制程序只運(yùn)行一個(gè)的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
C# 全角和半角轉(zhuǎn)換以及判斷的簡(jiǎn)單代碼
這篇文章介紹了在C#中判斷和轉(zhuǎn)換全角半角的方法,有需要的朋友可以參考一下2013-07-07

