using System;
namespace Shape {
public abstract class Shape {//创建一个Shape的抽象类
public abstract double getL();//定义抽象类中的抽象方法,在抽象类的子类中必须有对应的方法
public abstract double getS();//所有图形都由周长和面积
}
class Triangle : Shape {//三角形
private double line1,line2,line3;
public double getLine1()
{
return line1;
}
public void setLine1(double line1)
{
this.line1 = line1;
}
public double getLine2()
{
return line2;
}
public void setLine2(double line2)
{
this.line2 = line2;
}
public double getLine3()
{
return line3;
}
public void setLine3(double line3)
{
this.line3 = line3;
}
public Triangle(double line1, double line2, double line3)
{
this.line1 = line1;
this.line2 = line2;
this.line3 = line3;
}
public override double getL() {
return line1+line2+line3;
}
public override double getS() {
double p = (line1 + line2 + line3) / 2;
return Math.Sqrt(p*(p-line1)*(p-line2)*(p-line3));
}
}
class Circle :Shape{//圆形
private double radius;
public static double PI = 3.1415926;
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public Circle(double radius) {
this.radius = radius;
}
public override double getL() {
return PI*radius*2;
}
public override double getS() {
// TODO Auto-generated method stub
return PI*radius*radius;
}
}
class Square : Shape {//正方形
private double a;
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public Square(double a) {
this.a = a;
}
public override double getL() {
return a*4;
}
public override double getS() {
return a*a;
}
}
class TestShape{
static void Main(string[] args)
{
Shape []s= {new Triangle(6,8,10),new Square(1),new Circle(1) };//创建一个Shape数组实例化子类对象
foreach(Shape shape in s) {//运用foreach循环来输出这些图形的周长和面积
System.Console.WriteLine(shape.getL()+"\t"+shape.getS());
}
Console.ReadKey();
}
}
}
多态抽象类实现(c#)
猜你喜欢
转载自blog.csdn.net/rj2017211811/article/details/82983244
今日推荐
周排行