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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 党传才 中级黑马   /  2012-3-26 20:46  /  5257 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

弄不清出这些概念的区别,大家帮我解释下吧   

8 个回复

倒序浏览
重写:父类与子类之间。方法名相同,参数相同。
重载:同一类中,方法名相同,参数不同。
其实你说的的复写应该是重写的令一种叫法。。
回复 使用道具 举报
重写对子类来说的,把从父类继承过来的方法重新写一遍赋予其新的功能。
重载则是同一个类中方法名相同,参数不同的方法叫重载
lz所说的复写应和重写是一个概念
回复 使用道具 举报
重写(复写)是子类的方法覆盖父类的方法,要求方法名和参数都相同
重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,
但是参数却不相同,方法体也不相同,
最常见的重载的例子就是类的构造函数。
回复 使用道具 举报
重载  Overloading   当方法重载的时候方法的名称相同,但是参数类型或个数不同,发生的范围在同一个类中
例如:
public class T8 {
  public static void main(String args[])
  {
   int z=add(10,20,30);
   float t=add(10.0f,20.0f,30.0f);
   
   System.out.println(t);
   System.out.println(z);
  }
  
  public static int add(int a, int b,int c)                   //方法1
  {
   int z=a+b+c;
   
   return z;
  }
  
  public static float add(float a, float b,float c)            //方法2重载方法1

  {
   float z=a+b+c;
   
   return z;
  }
}
重写(复写) Override  方法名称相同,参数类型或者数目不同,方法的访问权限不能更严格,因为要继承,所以发生在继承关系之中,由子类进行覆写
例如:
abstract class Err                                    //抽象类
{
public void printInfo()
{
  System.out.println("姓名:"+this.getName());
  System.out.println("班级:"+this.getCla());
  System.out.println("原因:"+this.getCau());
}
public abstract String getName();               //抽象方法
public abstract String getCla();
public abstract String getCau();
}

class San extends Err                            //发生继承
{
public String getName()                       //子类中复写父类中的抽象方法
{
  return "张三";
}
public String getCla()                        //子类中复写父类中的抽象方法

{
  return "计算机4班";
}
public String getCau()                        //子类中复写父类中的抽象方法

{
  return "上课睡觉";
}
}

class Si extends Err                               //发生继承
{
public String getName()                                    //子类中复写父类中的抽象方法
  
{
  return "李四";
}
public String getCla()                               //子类中复写父类中的抽象方法

{
  return "计算机5";
}
public String getCau()                                //子类中复写父类中的抽象方法

{
  return "上机期间打游戏";
}
}

public class R2 {
public static void main(String args[])
{
  Err e1 = new San();
  e1.printInfo();
  System.out.println("****************");
  Err e0 = new Si();
  e0.printInfo();
}
}
回复 使用道具 举报
重写和复写是一个意思,必须是子类重写父类的方法,方法名相同,参数类型和参数个数相同,主要是方法体内的代码按自己的需要去写
重载是在同一类中,方法名相同,参数类型和个数不同,返回值类型可以不同
回复 使用道具 举报
郑涛 中级黑马 2012-3-26 22:19:14
7#
重载叫OverLoad,重写与覆写都叫OverRide ,那么OverLoad和OverRide有什么区别呢。方法的重载Overload和重写Override是Java多态性的不同表现。
        重载Overload是一个类中多态性的一种表现。
        如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overload)。
        重写Override是父类与子类之间多态性的一种表现。
        如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Override)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
另外Overload的方法是可以改变返回值的类型。
回复 使用道具 举报
孙天 黑马帝 2012-3-26 22:58:57
8#
重写和覆写是一个概念,当子父类中出现一模一样的函数时,就会出现调用时运行子类的方法的情况。这种情况形象的称为覆盖或者重写或者覆写
定义了一个子类,保留了父类中功能的声明,但是重新定义了功能的内容。这就是覆盖的应用。当对一个类中的功能进行重新定义时,可以定义该类的子类,并保留父类中的功能声明,重新定义功能的内容。并建立子类的对象调用功能。子类方法覆盖父类方法时,权限必须大于等于父类的权限(当碰到private就不叫覆盖了)。静态只能覆盖静态,或者被静态覆盖。
在一个类中,可以出现两个以上的同名函数。只要他们的参数个数或者参数类型不同,这就是函数的重载(重载只看括号里的)
回复 使用道具 举报
Overload(重载)和Override(覆盖)的区别。Overload(重载)的方法是否可以改变返回值的类型?
答:方法的重载Overload和重写Override是Java多态性的不同表现。
重载Overload是一个类中多态性的一种表现。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overload)。
重写Override是父类与子类之间多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Override)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
Overload的方法是可以改变返回值的类型。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马