public abstract class Shape { public double X; public double Y; public abstract double GetArea(); public Shape(double x,double y) { X = x; Y = y; } } public class Triangle:Shape { public Triangle(double x,double y) : base(x, y) { } public override double GetArea() { return X*Y*0.5; } } public class Circle:Shape { public Circle(double x) : base(x, 1) { } public override double GetArea() { return X*X*3.14; } } private void Button1_Click(object sender, EventArgs e) { if(radioButton1.Checked==true) { double x = Convert.ToDouble(textBox1.Text); double y = Convert.ToDouble(textBox2.Text); Triangle tri1 = new Triangle(x, y); textBox4.Text=tri1.GetArea().ToString(); } else { double r = Convert.ToDouble(textBox3.Text); Circle cir = new Circle(r); textBox4.Text = cir.GetArea().ToString(); } }
时间: 2024-02-10 16:35:23 浏览: 60
这段代码是一个简单的面向对象的程序,其中定义了一个抽象类 Shape 和两个具体的子类 Triangle 和 Circle。 Shape 类中定义了两个公共的属性 X 和 Y,以及一个抽象方法 GetArea()。Triangle 和 Circle 类都继承了 Shape 类,并且实现了 GetArea() 方法。在 Button1_Click 事件处理程序中,根据用户选择的 RadioButton,创建对应的对象 Triangle 或 Circle,调用其 GetArea() 方法计算面积并显示在 textBox4 中。这段代码可以用来计算三角形和圆形的面积。
相关问题
public abstract class Shape { public abstract double getArea();}public interface Drawable { void draw();}public class Rectangle extends Shape implements Drawable { private double width; private double height; public Rectangle(double width, double height) { this.width = width; this.height = height; } @Override public double getArea() { return width * height; } @Override public void draw() { System.out.println("Drawing a rectangle."); }}
这段代码展示了一个抽象类 Shape 和一个接口 Drawable,以及一个实现了 Shape 和 Drawable 的具体类 Rectangle。Shape 类是一个抽象类,其中定义了一个抽象方法 getArea(),这个方法没有实现,需要在子类中具体实现。Drawable 接口中定义了一个方法 draw(),任何实现了 Drawable 接口的类都必须实现 draw() 方法。Rectangle 类继承自 Shape 并实现了 Drawable 接口,它有一个构造方法,可以创建一个指定宽度和高度的矩形。在 Rectangle 类中,实现了 Shape 中的抽象方法 getArea() 和 Drawable 中的方法 draw(),getArea() 方法计算矩形的面积,draw() 方法打印出 "Drawing a rectangle."。这个例子展示了面向对象的多态特性,通过抽象类和接口,我们可以定义出一些通用的方法和属性,并让具体的类来实现这些方法和属性,从而实现代码的灵活性和复用性。
请从下列的抽象类shape类扩展出—个圆形类Circle,这个类圆形的半径radius作为私有成员,类中应包含初始化半径的构造方法,并重写shape类的两个方法。 public abstract class shape {// 抽象类 Plain Text public abstract double getArea0;//求面积 public abstract double getPerimeter(): // 求周长}
好的,我明白了你的问题。以下是从shape类扩展出的Circle类的代码:
```
public class Circle extends shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
}
```
在这个类中,我们将shape类扩展为Circle类,并且添加了一个私有成员变量radius。我们还重写了shape类中的两个抽象方法getArea()和getPerimeter(),以计算圆的面积和周长。初始化半径的构造方法也被包含在Circle类中。
阅读全文