首页 > Windows开发 > 详细

(C#)抽象类

时间:2021-05-30 15:47:21      阅读:17      评论:0      收藏:0      [点我收藏+]

抽象类和虚方法的区别:

虚方法父类有实现,抽象类父类无实现,不能用父类实例化。

 

using System;

namespace AbstractTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Animal animal = new Dog();
            animal.Say();// 输出结果:Wang

            Animal animal2 = new Cat();
            animal2.Say();// 输出结果:Miao

            Console.ReadLine();
        }
    }

    //抽象类
    public abstract class Animal
    {
        //抽象方法不具有方法体
        public abstract void Say();
    }

    class Dog : Animal
    {
        public override void Say()
        {
            Console.WriteLine("Wang");
        }
    }

    class Cat : Animal
    {
        public override void Say()
        {
            Console.WriteLine("Miao");
        }
    }
}

 

 可能用到的场景:

using System;

namespace AbstractTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Shape shape1 = new Circle(3);//声明一个形状,用圆形类实例化参数半径为3的一个对象。
            Console.WriteLine($"圆形形状面积为:{shape1.GetArea()},形状周长为:{shape1.GetPerimeter()}");

            Shape shape2 = new Rectangle(3,1.5);//声明一个形状,用矩形类实例化参数长为3宽为1.5的一个对象。
            Console.WriteLine($"矩形形状面积为:{shape2.GetArea()},形状周长为:{shape2.GetPerimeter()}");
            Console.ReadLine();
        }
    }

    //图形是抽象类型,各种形状都有可能,没有固定形状
    abstract class Shape
    {
        public abstract double GetArea();//获得形状的面积
        public abstract double GetPerimeter();//获得形状的周长
    }

    //圆形也是形状的一种,所以继承自Shape
    class Circle : Shape
    {
        //构造方法初始化圆形的半径
        public Circle(double r)
        {
            R = r;
        }

        //圆形的自有属性-半径
        public double R { get; set; }

        //重写父类的函数
        public override double GetArea()
        {
            return Math.PI * R * R; //圆面积πr2
        }

        public override double GetPerimeter()
        {
            return 2 * Math.PI * R; //圆周长2πr
        }
    }

    //矩形也是形状的一种,一样是继承自Shape
    class Rectangle : Shape
    {
        //构造方法初始化矩形的长和宽
        public Rectangle(double length,double width)
        {
            Length = length;
            Width = width;
        }

        //矩形的自有属性长
        public double Length { get; set; }
        //矩形的自有属性宽
        public double Width { get; set; }

        public override double GetArea()
        {
            return Length * Width;//矩形面积为长*宽
        }

        public override double GetPerimeter()
        {
            return 2 * (Length + Width);//矩形周长为长加宽乘以2
        }
    }

}

 

 

(C#)抽象类

原文:https://www.cnblogs.com/RuinGames/p/14827540.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!