c语言编程求长方形面积和周长:C编程使用抽象类计算圆形面积
c语言编程求长方形面积和周长:C编程使用抽象类计算圆形面积1、抽象类的派生类只能继承一个基类,也就是只能直接继承一个抽象类,但可以继承任意多个接口。using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class AbstractArea : Form { public AbstractArea() {
通过自定义的抽象类来计算圆形的面积。计算圆形面积时需要用到PI,在C#中使用math.pi常量字段来表示,它的值为3.14159265358979323846。
那么什么是抽象类?
如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅是作为其派生类的一个基类,这样的类就是抽象类。在抽象类中声明方法时,如果加上abstract关键字,则为抽象方法。
抽象类主要用来提供多个派生类可共享的基类的公共定义。它与非抽象类的主要区别有:1、抽象类不能直接实例化
2、抽象类中可以包含抽象成员,但是非抽象类中不可以包含抽象成员
3、抽象类不能被密封,在C#中声明抽象类时需要使用abstract关键字。声明抽象类时,除abstract关键字,Class关键字和类名外,其他的都是可选项。
程序界面:
程序界面
程序代码:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class AbstractArea : Form
    {
        public AbstractArea()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 定义一个抽象类,表示圆形结构,抽象类中有一个抽象方法,这个抽象方法并没有实体代码
        /// </summary>
        public abstract class circle
        {            
            public double r;//定义圆形半径字段                  
            public double R//定义圆形半径属性(可读写)
            {
                get { return r; }
                set {  r=value; }
            }
            public abstract double Area();//声明计算面积的抽象方法,该方法需要在派生类中具体实现            
        }
        /// <summary>
        /// 声明派生类,继承基类中的成员和方法,并重写基类中的抽象方法实现计算圆形面积
        /// </summary>
        public class area : circle
        {
            public override double Area()//重写基类中的方法
            {
                return Math.PI * R * R;//计算面积
            }            
        }
        /// <summary>
        /// 通过按钮计算圆形面积
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender  EventArgs e)
        {            
            area mj = new area();//实例化派生类
            mj.R = double.Parse(tex_r.Text.ToString());//为半径属性赋值
            tex_result.Text = mj.Area().ToString();//进行面积计算并转换为字符串
        }
    }
}结语:
    
抽象类和接口的区别主要有以下几点:
1、抽象类的派生类只能继承一个基类,也就是只能直接继承一个抽象类,但可以继承任意多个接口。
2、抽象类中,可以定义成员的实现,但接口中不可以
3、抽象类中可以包含字段、构造函数、析构函数、静态成员或常量等,接口中不可以
4、抽象类中的成员可以是私有的,只要他们不是抽象的、受保护的内部成员,只能在应用程序的代码或派生类中访问,但接口中的成员必须是公共的。
喜欢的请关注、收藏、转发!




