我是靠谱客的博主 洁净小蘑菇,最近开发中收集的这篇文章主要介绍关于C#继承的简单应用代码分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

比如,现在有一些图形,需要计算他们的面积,计算面积的方法都不一样,可以这么做

声明一个抽象类

//基类
    abstract class Shape
    {
        //抽象方法 计算面积
        public abstract double ComputerArea();

    }

声明子类

//子类 继承Shape 实现抽象方法
    class Circle : Shape
    {
        private double _radius;

        //构造函数
        public Circle(double radius) => _radius = radius;

        //实现抽象方法
        public override double ComputerArea()
        {
            return _radius * _radius * Math.PI;
        }
    }

    //子类 继承Shape 实现抽象方法
    class Rectangle : Shape
    {

        private double _width;

        private double _height;

        //构造函数
        public Rectangle(double width, double height)
        {
            _width = width;
            _height = height;
        }
        //实现抽象方法
        public override double ComputerArea()
        {
            return _width * _height;
        }
    }

    //子类 继承Shape 实现抽象方法
    class Triangle : Shape
    {

        private double _bottom;

        private double _height;

        //构造函数
        public Triangle(double bottom, double height)
        {
            _bottom = bottom;
            _height = height;
        }
        //实现抽象方法
        public override double ComputerArea()
        {
            return _bottom * _height / 2;
        }
    }

声明计算类

//计算类
    class Calculate
    {
        //传入一个父类作为参数,调用方法
        public void Calc(Shape shape)
        {

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

测试

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);
        }
    }

运行结果

实际上 如果是只有这个方法要实现的话,继承接口也是可以的!

实例扩展:

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


/**
 * 假设我们公司有两种程序员:
 * java程序员指的是用java语法写程序的程序员,用Jpro这个类表示;
 * C#程序员指的是用C#语法写程序的程序员,用Cpro这个类来表示。
 * 每个类都有一个WriteCode()方法。
 * 都属于程序员,用Programmer这个类表示。
 * 现在公司来了一个项目,要求派某个程序员写一个程序。
 */
namespace inheritApplication
{
  //程序员类(基类)
  class Programmer
  {
    public string name = "我是程序员";
  }
  //java程序员类
  class Jpro 
  {
    public string name = "java程序员";
    public string language = "我用java语法写代码";
  }
  //C程序员类
  class Cpro 
  {
    public string name = "C#程序员";
    public string language = "我用C#语法写代码";
  }
  //编写项目类
  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();
    }
  }
}

到此这篇关于关于C#继承的简单应用代码分析的文章就介绍到这了,更多相关C#继承的简单应用内容请搜索靠谱客以前的文章或继续浏览下面的相关文章希望大家以后多多支持靠谱客!

最后

以上就是洁净小蘑菇为你收集整理的关于C#继承的简单应用代码分析的全部内容,希望文章能够帮你解决关于C#继承的简单应用代码分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(95)

评论列表共有 0 条评论

立即
投稿
返回
顶部