A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋健 中级黑马   /  2013-3-12 20:05  /  1646 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

方法重载和方法重写有什么区别?
具体在什么时候使用?

4 个回复

倒序浏览
重写一般是指父类和子类之间,子类重写了父类的一个方法,当然方法名是一样的,而且不能改变父类方法的返回值,比如说父类是返回String,子类重写了这个方法,想返回一个int,那是不行的,也得返回String。
如 public class TestClass1{
    public int test(int i){return 1;}
}

public class TestClass2 extends TestClass1{
     public int test(int i){return 2;}
}

重载是一个类里面,写了多了同名的方法,各个方法的返回值类型可以不一样。要注意区分重载方法可以通过参数列表的个数,类型和顺序。但是不推荐用顺序来进行重载,这会让代码可读性极差。
如 public class TestClass{
    public int test(int i){return 1;}
    public int test(float f){return 1;}
}

评分

参与人数 1黑马币 +3 收起 理由
宋健 + 3

查看全部评分

回复 使用道具 举报
重载:只看函数的参数列表。
         简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
         重载的方法只属于子类。
当需要对同一个方法进行不同的操作时(传递不同的参数)就用重载。

覆盖(重写):子父类的方法要一模一样。
当需要对父类中的某个方法改变的时候就用覆盖。

评分

参与人数 1黑马币 +3 收起 理由
宋健 + 3

查看全部评分

回复 使用道具 举报
重写:
    子类可继承父类的方法,而不需要重写相同的方法,但有时子类并不想原封不动地继承父类的方法,而是想做一定的修改,这就需要采用方法的重写,又称为方法的覆盖。 重写时需将父类的方法设为虚方法,重写的方法需添加override关键字。
   
public class Person
    {
        public Person(string name)
        {
            this.Name = name;
        }
        public virtual void Show()
        {
            Console.WriteLine("父类中的show方法");
        }
    }

    public class Chinese : Person
    {
        public Chinese(string name)
            : base(name)
        {
            
        }
        public override void Show()
        {
            Console.WriteLine("我叫:{0},我是中国人!",Name);
        }
    }



重载:
    方法重载是让类以统一的方式来处理不同的参数类型或不同个数的参数的一种方法。方法重载就是类中可以创建多个方法,它们有相同的名字,但有不同的参数类型和参数个数,调用时通过参数类型参数个数的不同来决定具体调用哪个方法。
    class Person
{
      void name(string a)
      {
            Console.WriteLine("string a!");
      }

       void name(int a)
      {
            Console.WriteLine("int a!");
      }

      void name(string a,int i)
      {
            Console.WriteLine("string a,int i!");
      }

}

评分

参与人数 1黑马币 +3 收起 理由
宋健 + 3

查看全部评分

回复 使用道具 举报
重载:同名函数存在于同一个类中,条件是参数列表必须不同
重写:一般是子类重写父类方法,返回值函数名和参数列表必须相同,一般用于对父类方法进行修改性改进以满足需求
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马