方法重写
概念
在Java中,子类继承父类中的方法,但有时父类方法并不能满足子类要求,这就需要子类对继承的方法进行从新定义,这就是方法重写,方法重写又称方法覆盖。
作用
通过方法重写,实现子类的要求。
注意事项
方法重写时,方法的返回值类型 方法名 参数列表都要与父类一样。(同名,同参,同返回)
子类方法覆盖父类方法,必须要保证权限大于等于父类权限。
方法重写时,子类不能缩小父类抛出的异常
示例:以宠物、宠物狗、宠物猫为例。
class Pet {//宠物
public void sound(){
System.out.println("宠物叫");
}
}
class Dog extends Pet {//狗
//方法重写
@Override
public void sound() {
System.out.println("汪汪汪");
}
}
class Cat extends Pet{//猫
//方法重写
@Override
public void sound(){
System.out.println("喵喵喵");
}
}
public class PetShop{//宠物店
public static void main(String[] args) {
Dog dog = new Dog();
dog.sound();//调用狗的sound()
Cat cat = new Cat();
cat.sound();//调用猫的sound()
}
}
解析:
创建宠物类,猫类、狗类继承宠物类,猫类、狗类重写宠物类的sound方法。
运行结果:
汪汪汪
喵喵喵
方法重载
概念
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
作用
通过方法重载实现方法的多种可能性。
注意事项
在同一个类中,方法重载时,方法的方法名要与类名一样,每个方法的参数个数、类型、顺序不同。(同名,不同参,与返回无关)
示例:
public void play(){
System.out.printf("我的名字是%s,我的成绩是%d,我的学号是%s",this.name,this.score,this.no);
}
public int play(int time){
return 0;
}
s1.play(1);//调用的是含参的方法
s2.play();//调用的是无参的方法
区别
- 方法重载:
- 在同一个类中(包括从父类继承的) 方法 同名 不同参 与返回值无关
- 方法重写:
- 方法重写存在于继承关系中
- 父子类之间的方法 同名,同参,同返回