黑马程序员技术交流社区
标题:
【求助】重写/重载/复写的概念
[打印本页]
作者:
党传才
时间:
2012-3-26 20:46
标题:
【求助】重写/重载/复写的概念
弄不清出这些概念的区别,大家帮我解释下吧
作者:
鲍亚坤
时间:
2012-3-26 20:54
重写:父类与子类之间。方法名相同,参数相同。
重载:同一类中,方法名相同,参数不同。
其实你说的的复写应该是重写的令一种叫法。。
作者:
杨波
时间:
2012-3-26 20:57
重写对子类来说的,把从父类继承过来的方法重新写一遍赋予其新的功能。
重载则是同一个类中方法名相同,参数不同的方法叫重载
lz所说的复写应和重写是一个概念
作者:
李柯
时间:
2012-3-26 21:20
重写(复写)是子类的方法覆盖父类的方法,要求方法名和参数都相同
重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,
但是参数却不相同,方法体也不相同,
最常见的重载的例子就是类的构造函数。
作者:
李见黎
时间:
2012-3-26 21:26
重载 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();
}
}
作者:
lipanfeng
时间:
2012-3-26 21:27
重写和复写是一个意思,必须是子类重写父类的方法,方法名相同,参数类型和参数个数相同,主要是方法体内的代码按自己的需要去写
重载是在同一类中,方法名相同,参数类型和个数不同,返回值类型可以不同
作者:
郑涛
时间:
2012-3-26 22:19
重载叫OverLoad,重写与覆写都叫OverRide ,那么OverLoad和OverRide有什么区别呢。方法的重载Overload和重写Override是Java多态性的不同表现。
重载Overload是一个类中多态性的一种表现。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overload)。
重写Override是父类与子类之间多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Override)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
另外Overload的方法是可以改变返回值的类型。
作者:
孙天
时间:
2012-3-26 22:58
重写和覆写是一个概念,当子父类中出现一模一样的函数时,就会出现调用时运行子类的方法的情况。这种情况形象的称为覆盖或者重写或者覆写
定义了一个子类,保留了父类中功能的声明,但是重新定义了功能的内容。这就是覆盖的应用。当对一个类中的功能进行重新定义时,可以定义该类的子类,并保留父类中的功能声明,重新定义功能的内容。并建立子类的对象调用功能。子类方法覆盖父类方法时,权限必须大于等于父类的权限(当碰到private就不叫覆盖了)。静态只能覆盖静态,或者被静态覆盖。
在一个类中,可以出现两个以上的同名函数。只要他们的参数个数或者参数类型不同,这就是函数的重载(重载只看括号里的)
作者:
李增强
时间:
2012-3-26 23:47
Overload(重载)和Override(覆盖)的区别。Overload(重载)的方法是否可以改变返回值的类型?
答:方法的重载Overload和重写Override是Java多态性的不同表现。
重载Overload是一个类中多态性的一种表现。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overload)。
重写Override是父类与子类之间多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Override)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
Overload的方法是可以改变返回值的类型。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2