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 _4_04
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = "抽象类计算圆的面积";
textBox2.ReadOnly=true;//将textBox2设置为只读
}
private void button1_Click(object sender, EventArgs e)
{
myarea my = new myarea();//实例化派生类
area mymianji = my;//使用派生类对象实例化抽象类
mymianji.Banjing = double.Parse(textBox1.Text);//使用抽象类对象访问抽象类中的半径属性
textBox2.Text = mymianji.show().ToString();//使用抽象类对象调用派生类中的方法
}
private void button2_Click(object sender, EventArgs e)
{
//清空文本框里面的内容,用于下一个圆的半径的计算
textBox1.Text = "";
textBox2.Text = "";
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != '\b')//这是允许输入退格键
{
if (e.KeyChar != '.')//这是允许输入小数点键
{
if ((e.KeyChar < '0') || (e.KeyChar > '9'))//这是允许输入0-9数字
{
e.Handled = true;
}
}
}
}
}
public abstract class area
{
private double banjing = 0;//定义圆的半径
public double Banjing//半径属性及实现
{
get
{
return banjing;
}
set
{
banjing = value;
}
}
public abstract double show();//抽象方法用来计算圆的面积并输出
}
public class myarea : area//继承抽象类
{
public override double show()//重写抽象类中计算半径的方法
{
return 3.1415926* Banjing * Banjing;
}
}
}
界面设计如下: