1、方法的重载
方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。方法的重载即:同名不同参
1.1、方法重载的补充说明
- 参数不同指的是参数的类型不同或是参数的个数不同
- 构造方法也可以重载
1.2、示例:方法重载同名不同参
public class Student {
public void introduce(String name) {
System.out.println("我叫" + name);
}
public void introduce(int age) {
System.out.println("我今年" + age + "岁");
}
public void introduce(String name, int age) {
System.out.println("我叫" + name + "今年" + age + "岁");
}
}
1.3、示例:重载构造方法
public class Student {
private String name;
private int age;
public Student(String name) {
this.name = name;
}
public Student(int age) {
this.age = age;
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void introduce() {
System.out.println("我叫" + name + "今年" + age + "岁");
}
}
2、方法的重写
方法重写基于继承,子类继承父类,子类可以调用父类的方法,同时子类也可以重写父类中的方法,来实现和父类中不同的业务处理逻辑。重写要求子类中方法与父类中的方法名称仙童,参数相同,参数类型相同。当子类调用该方法时,基类中的方法则被覆盖。方法重写即:重写父类方法,同名也同参。
2.1、示例:动物会叫,叫声各不相同
动物类
public class Animal {
public void speek(){
System.out.println("动物都会叫");
}
}
狗类,继承自动物类
class Dog extends Animal {
/**
* 重写父类的speek方法
*/
@Override
public void speek() {
System.out.println("旺旺旺...");
}
}
猫类,继承自动物类
class Cat extends Animal {
/**
* 重写父类的speek方法
*/
@Override
public void speek() {
System.out.println("喵喵喵...");
}
}
Test类
public class Test {
public static void main(String[] args) {
Animal animal = new Animal();
animal.speek();
Dog dog = new Dog();
dog.speek();
Cat cat = new Cat();
cat.speek();
}
}
3、重载与重写的区别
重载:在同一个类中,当方法名相同,形参列表不同的时候 多个方法构成了重载
重写:在不同的类中,子类对父类提供的方法不满意的时候,要对父类的方法进行重写。
英文 | 位置 | 修饰符 | 返回值 | 方法名 | 参数 | 抛出异常 | 方法体 | |
重载 | overload | 同一个类中 | 无关 | 无关 | 必须相同 | 必须不同 | 无关 | 不同 |
重写 | override | 子类父类中 | 父类的权限修饰符要低于子类的权限修饰符 | 父类的返回值类型大于子类 | 必须相同 | 必须相同 | 小于等于 | 不同 |
扩展:
在重写方法中子类的访问修饰符 相同或大于 父类的访问修饰符。
在重写方法中子类的返回值类型 跟父类的返回值类型相同或是其子类。