java多态中的重载于覆盖有什么不同

2024-12-16 18:47:28
推荐回答(3个)
回答1:

好吧!重载必须在同一个类中,比如两个成员方法是重载关系,要求他们对应位置上的参数类型不同或是要求两个方法参数个数不同(两条件只要满足一个就行),重载与方法的返回类型无关,
然后覆盖是指在子类中出现了与父类相同的成员方法,要求这两个方法的参数和返回类型都相同,关于修饰权限,是子类的权限永远大于等于父类,比如父类是public,子类只能是public,但是如果父类是private,子类可以是private,protected,public,
最后要注意的是父类(对于子类)可访问的东东等于是子类的(相当于同一个类中),如果在覆盖时,(子类父类中有同名方法)如果子类的同名方法的参数与父类不同,覆盖就变成重载了..

回答2:

方法覆盖:如果从父类继承来的方法的功能不适应子类的要求,则可以声明自己的方法,在声明的时候,使用与父类相同的方法名和参数,这种情况称为方法覆盖(或重写)
class A{ int i;
public void changgeValue(){i=i-50;}
. ..................................
}
class B extends A{ public void changgeValue(){i=i+100;}

}
方法重载:方法重载是指在一个类中可以有名字相同的多个方法,但这些方法必须是不同的或者是参数个数不同,或者参数类型不同,返回值可以相同可以不同。例如,
class A{ double area(float r){return Math.Pi*r*r;}
double area(float r,float w){return l*w;}
double area(float r,float w,float h){return l+w+h;}
....................................
}

回答3:

覆盖是在继承里面的术语,比如父类中有一个类叫eat(),如果子类中也出现了这个eat(int n),那么这个就叫覆盖
重载只是在同一个类型中(class),有多种方法