黑马程序员技术交流社区
标题:
重载和覆盖的区别
[打印本页]
作者:
韦振华
时间:
2012-12-24 22:25
标题:
重载和覆盖的区别
各位大侠,在面向对象编程中,关于重载和覆盖的区别是啥呀?希望有例子看哦
作者:
netboy032
时间:
2012-12-24 22:44
这两个根本没什么关系,重载是用在同一个类中的,为的是同名函数能实现不同的功能。
而覆盖是用于子类和父类之间,用于子类如果不想继承父类的某个函数,或者想要扩展父类的某个函数功能。
作者:
刘经鹏
时间:
2012-12-24 23:03
java中可以对同名函数进行重载,对继承来的方法进行覆盖,列举一下特性:
覆盖:
1.覆盖的方法名和参数必须和父类的方法保持一致,且父类的方法对子类是可见的。
2.覆盖之后的方法的访问权限可以>=父类原来方法的访问权限,返回类型级别可以<=父类的返回类型(继承或实现父类的返回类型的类)
重载:
1.重载需要方法名相同,参数类型不同。
2.两个不同的参数类型可以是继承或实现的关系(但是不推荐),java会自动匹配最优的方法,传进来的如果是更具体(比如子类)的就会调用更具体的方法。
作者:
冯伟超
时间:
2012-12-25 02:11
重载是在一个类中,重载表示的是方法名相同,参数列表不同,与返回值没有任何关系。
覆盖是存在于继承或是接口的实现中的,是关系到两个类中的。通常都是子类对父类的中的方法进行重写
。
作者:
冯伟超
时间:
2012-12-25 02:14
下面就是重载和重写的示例,希望楼主好好体会
重载的示例:
class A
{
public void show(int a,int b)
{}
public void show(int a,int b)
{}
}
重写的示例:
class Demo{
public static void main(String[]args){
B b=new B();
b.fun();
}
}
abstract class A {
//public abstract void fun();
public void fun(){
System.out.println("ttt");
}
}
class B extends A {
public void fun(){
System.out.println("mmmmmm");
}
}
作者:
黄锦成
时间:
2012-12-25 09:15
重载:
public void add(int a,int b)
public void add(int a,int b,int c)
覆盖,建议你去看视频
作者:
范德农
时间:
2012-12-25 14:39
这么说吧,假定一个类a,它有个方法public a b(int num),然后它有个子类c。
如果你在a中又写了个方法public a b(String num),这就是重载,啥叫重载,方法名想通,形参不同的就是重载;这两个是硬性指标,其他无所谓
而重写呢,子类继承父类,在子类里把父类方法重新过一遍,表面上看还是你的方法,但实际上不是了,它的要点在于方法名、形参必须相同,至于其他的,可以用一句话总结,两同两小一大,两同是方法名、形参相同,两小是子类方法抛出异常、返回类型要比父类的小,一大呢就是子类的访问权限必须比父类大
就是说重写只能发生在c里,例如在c里写个public c b(int num)就是重写,另外需要强调的一点就是,静态方法只能被静态方法重写,实例方法同样
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2