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、抽象类中的成员可以是私有的,只要他们不是抽象的、受保护的内部成员,只能在应用程序的代码或派生类中访问,但接口中的成员必须是公共的。
喜欢的请关注、收藏、转发!