using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication15 { abstract class DBX { protected int dianshu; public void Accept() { Console.WriteLine("请输入点数"); dianshu = Convert.ToInt32(Console.ReadLine()); } /*public void Accept(int d) { * Console.WriteLine(""); dianshu = d; }*/ public abstract void Area(); public abstract void bianchang(); } class ZSJ : DBX { private double length; private double area; public override void bianchang() { Console.WriteLine("请输入正三角形的边长"); length = Convert.ToInt32(Console.ReadLine()); } public override void Area() { area = Math.Sqrt(3) * length * length / 4; Console.WriteLine("正三角形的面积为: "); Console.WriteLine(area); } } class Rectangle : DBX { private double length; private double width; private double area; public override void bianchang() { Console.WriteLine("请输入长方形的长"); length = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入长方形的宽"); width = Convert.ToInt32(Console.ReadLine()); } public override void Area() { area = length * width; Console.WriteLine("长方形的面积为:"); Console.WriteLine(area); } } class Program { static void Main(string[] args) { ZSJ zsj = new ZSJ(); Rectangle r = new Rectangle(); zsj.bianchang(); zsj.Area(); r.bianchang(); r.Area(); Console.ReadKey(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication15 { abstract class DBX { protected int dianshu; public void Accept() { Console.WriteLine("请输入点数"); dianshu = Convert.ToInt32(Console.ReadLine()); } /*public void Accept(int d) { * Console.WriteLine(""); dianshu = d; }*/ public abstract void Area(); public abstract void bianchang(); } class ZSJ : DBX { private double length; private double area; public override void bianchang() { Console.WriteLine("请输入正三角形的边长"); length = Convert.ToInt32(Console.ReadLine()); } public override void Area() { area = Math.Sqrt(3) * length * length / 4; Console.WriteLine("正三角形的面积为: "); Console.WriteLine(area); } } class Rectangle : DBX { private double length; private double width; private double area; public override void bianchang() { Console.WriteLine("请输入长方形的长"); length = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入长方形的宽"); width = Convert.ToInt32(Console.ReadLine()); } public override void Area() { area = length * width; Console.WriteLine("长方形的面积为:"); Console.WriteLine(area); } } class Program { static void Main(string[] args) { ZSJ zsj = new ZSJ(); Rectangle r = new Rectangle(); zsj.bianchang(); zsj.Area(); r.bianchang(); r.Area(); Console.ReadKey(); } } }
遇到的大问题:基本没有
遇到的小问题:通过查阅塔的第二条约定解决
新学到:
1、在派生类中,通过包括使用 override 修饰符的属性声明,可以重写抽象的继承属性
2、重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtual、abstract 或override 的。
3、抽象方法必须声明在抽象类中,abstract 修饰符用于表示所修饰的类是不完整的,并且它只能用作基类,而且抽象类不能被密封。
4、抽象类可以包含抽象方法和抽象访问器