方法重载和重写的区别

来源:互联网 发布:统计学数据分析论文 编辑:程序博客网 时间:2024/06/06 10:51

经常会听到方法重载,方法重覆(覆写),以下用几个控制台程序小例子来说说他们的区别。

 

重载 : Overloading   当方法重载的时候方法的名称相同,但是参数类型或个数不同,发生的范围在同一个类中
重写override : Override  (方法覆写)方法名称相同,参数类型或者数目不同或返回值不同,发生在子类中,在继承的的子类中经常  用到。

1.重载:

class Program
    {
        static void Main(string[] args)
        {
            int resultA = Add(10,20);
            float resultB = Add(10.2f, 20.2f);
            Console.WriteLine (resultA);
            Console.WriteLine (resultB);
        }
        public static int Add(int a, int b)   //方法1
        {
            int z = a + b;
            return z;
        }
        public static float Add(float a, float b)   //重载方法1,方法名相同,参数不同,并且在同一个类中

        {
            float z = a + b;
            return z;
        }
    }

 

 
2.重写: (在继承子类中的应用)

class Program
    {
        static void Main(string[] args)  //输出程序结果
        {
            GetOne one = new GetOne();
            one.GetName();
            GetTwo two = new GetTwo();
            two.GetName();
        }

 

       public  abstract class GetResult     //抽象类
        {
            public abstract void GetName();  //抽象方法
        }

 

        public class GetOne : GetResult    //继承抽象类
        {
            public override void GetName()   //重写抽象类中的抽象方法
            {
                Console.WriteLine("One");
            }
        }

        public class GetTwo : GetResult   //继承抽象类
        {
            public override void GetName()    //重写抽象类中的抽象方法
            {
                Console.WriteLine("Two");
            }
        }
    }

 

 总结 方法重载和方法重写的相同点和不同点:

 相同点 :      都要求方法名称相同
                 都可以应用于抽象方法和非抽象方法之间
不同点 :
                方法重载发生在同一个类的内部的方法内,而方法重写发生在继承关系中,子类重写了父类的方法
                方法重载不要求方法的返回类型一致与否 而方法重写要求返回类型必须一致
                方法重载要求方法的参数签名必须不一致,而方法重写要求方法的参数签名必须一致
                方法重载对方法的访问权限和抛出异常没有限制,而方法重写对方法的访问权限和抛出异常有限制

 

原创粉丝点击