一,重载
1.概念:对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数、类型、顺序至少有一个不一样,这时候局构成方法重载
2.示例:
public class Test{
public void a( ){
};
public void a( int i){
};
}
说明:在Test类中有两个方法,名字都相同,都是a。在调用方法a时,如果不传参数,则系统会自动调用第一个方法a,如果传入一个 int 类型的参数,则系统调用第二个方法a。
public class Test{
public void a(int i){
};
public void a(String j){
};
}
说明:在Test类中有两个同名的方法a。在调用方法时,如果传入一个int类型的参数,则会自动调用第一个a方法,如果传入一个String类型的参数,则会自动调用第二个方法a。
public class Test{
public void a(int i,String j){
}
public class a(String j,int i){
}
}
说明:在Test类中有两个同名的方法。在调用方法时,如果传入的第一个参数类型为int,第二个参数类型为String,则自动调用第一个方法a。如果传入的第一个参数为String类型,第二个参数类型为int,则自动调用第二个方法a。
3.作用:
方法重载就是对不同数据类型的的数据实现相似的操作。
二,重写
1.概念:
当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。
重写也是覆盖 override
2.前提:
必须要有继承关系
3.特点:
(1):当子类重写了父类的函数,那么子类的对象如果调用该函数,一定调用的是重写过后的函数。
可以通过super关键字进行父类的重写函数的调用。
(2): 继承可以使得子类增强父类的方法
4.细节:
(1): 函数名必须相同
(2):参数列表必须相同
(3): 子类重写父类的函数的时候,函数的访问权限必须大于等于父类的函数的访
问权限否则编译报错
(4):子类重写父类的函数的时候,返回值类型必须是父类函数的返回值类型或该返回值类型的子类。不能返回比父类更大的数据类型
5.示例:
class Animal{
int x=1;
String name;
void eat(){
System.out.println("吃东西");
}
void shout(){
System.out.println("我是动物");
}
}
class Dog extends Animal{
void eat(){
System.out.println("啃骨头");
}
void shout(){
System.out.println("旺旺");
}
void eat(String food){
System.out.println("吃:"+food);
}
}
class Cat extends Animal{
void eat(){
System.out.println("吃老鼠");
}
void shout(){
System.out.println("喵喵");
}
}
class Demo9{
public static void main(String[] args){
Dog d=new Dog();
d.shout();
d.eat();
Cat c=new Cat();
c.shout();
c.eat();
System.out.println();
}
说明:
动物类有名字,有吃和叫的方法
狗继承动物重写父类吃和叫的方法
猫继承动物重写父类吃和叫的方法
三,重载和重写的不同
1:重载(overload):
1:前提: 所有的重载函数必须在同一个类中
2:特点:
函数名相同,参数列表不同,与其他的无关(访问控制符、返回值类型)
3:不同:
个数不同 、 顺序不同、 类型不同
2:重写(override):
1:前提: 继承
2:特点:
函数名必须相同、参数列表必须相同。
子类的返回值类型要等于或者小于父类的返回值