重写是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override。 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)
例子:- class Program
- {
- static void Main(string[] args)
- {
- Circle pan = new Circle();
- pan.CircleLength();
- Console.WriteLine("pan的面积为{0}",pan.Area());
- Wheel carWheel = new Wheel();//实例化一个wheel类的对象carWheel
- carWheel.CircleLength();
- Console.ReadKey();
- }
- }
- public class Circle//定义一个circle(圆)的类
- {
- double Pi = 3.14;//定义Pi为double型,值为3.14
- double r = 0.0;//定义半径并初始化
- virtual public void CircleLength()//定义一个无返回值的方法,输出圆的周长
- {
- Console.Write("请输入圆的半径:r=");
- r = double.Parse(Console.ReadLine());
- Console.WriteLine("圆的周长为{0}", 2 * Pi * r);
- }
- public double Area()//定义一个返回值为double类型的方法,返回圆的面积
- {
- Console.Write("请输入圆的半径:r=");
- r = double.Parse(Console.ReadLine());
- return Pi * r * r;
- }
- }
- public class Wheel : Circle //定义一个wheel类,继承自circle类,冒号前面是派生类,冒号后面是基类
- {
- string brand;//派生类中新增加的属性
- public override void CircleLength()//重写CircleLength方法,要加override关键字
- {
- Console.Write("轮子的品牌是:");
- brand = Console.ReadLine();
- base.CircleLength();//base关键字是用来调用基类中的方法
- Console.WriteLine("{0}牌轮子还不错!",brand);
- }
- }
复制代码 重载:
方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。典型例子:Console.WriteLine()该方法就有18个重载函数,可以传人不同类型和不同个数的参数。
重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。
|