using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Shape{ /** * 抽象形状类 */ public abstract class Shape { PRivate int edge; //构造函数 public Shape(int edge) { this.edge = edge; } //抽象类实现的方法,子类可以重用 public int GetEdge() { return this.edge; } //抽象方法,子类必须重写,并在声明上加上override public abstract int CalcArea(); } /** * 三角形类,继承自形状类 */ public class Triangle : Shape { private int bottom; private int height; //构造函数,构造的同时调用父类指定构造器 public Triangle(int bottom, int height) : base(3) { this.bottom = bottom; this.height = height; } //重写同名方法 public override int CalcArea() { return this.bottom * this.height / 2; } } /** * 矩形类,继承自形状类 */ public class Rectangle : Shape { private int bottom; private int height; //构造函数,构造的同时调用父类指定构造器 public Rectangle(int bottom, int height) : base(4) { this.bottom = bottom; this.height = height; } //重写同名方法 public override int CalcArea() { return this.bottom * this.height; } } class Program { static void Main(string[] args) { //测试,可用父类映射子类 Shape triangle = new Triangle(4, 5); Console.WriteLine(triangle.GetEdge()); Console.WriteLine(triangle.CalcArea()); Shape rectangle = new Rectangle(4, 5); Console.WriteLine(rectangle.GetEdge()); Console.WriteLine(rectangle.CalcArea()); } }}
新闻热点
疑难解答