重载
对于功能类似的方法来说,因为参数列表的不同,却需要记住那么多方法名称,太麻烦,因此,使用方法重载(Overload)来解决这个问题
重载特点
- 在同一个类中。
- 与访问权限修饰符和返回值类型无关,方法名称相同,参数列表不同(参数个数不同,顺序不同,类型不同)。
- 异常不同。
重载案例
public static void main(String[] args) {
System.out.println(calculate(1, 2));//3
System.out.println(calculate(1.0, 2));//3.0
System.out.println(calculate(1, 2.0));//3.0
System.out.println(calculate(1, 2, 3));//6.0
System.out.println(calculate(1, 2, 3, 4));//10
}
public static int calculate(int a, int b) {
return a + b;
}
public static double calculate(double a, int b) {
return a + b;
}
public static double calculate(int a, double b) {
return a + b;
}
public static double calculate(double a, int b, double c) {
return a + b + c;
}
public static int calculate(int a, int b, int c, int d) {
return a + b + c + d;
}
重写
重写(Override)是父类与子类之间多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Override)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
重写特点
- 存在于继承关系当中。
- 方法名称相同,参数列表(个数,类型,顺序)相同,返回值类型相同,具体实现不同。
- 子类方法访问修饰符的限制一定要大于父类方法的访问修饰
(public > protected > default > private)
。 - 子类重写方法一定不能抛出新的检查异常或者比被父类方法申明更加宽泛的检查型异常。
重写案例
package com.etime09;
public class Person { //创建一个父类Person
private String name;
private int age;
//父类中写一个eat()方法
public void eat() {
System.out.println("人都要吃饭");
}
}
---------------------------------------------
public class Student extends Person { //Student子类继承Person父类
@Override
//重写eat()方法 方法名,参数,返回类型相同;方法体内容不同
public void eat() {
System.out.println("学生喜欢吃肉");
}
}