方法重载和方法重写
- 方法的重载 : 在同一个类中,出现多个同名的方法,参数列表不同,与返回值类型,修饰符无关(同名 同类 不同参 (和返回值、修饰符无关))
- 方法的重写 : 子类中出现和父类中一模一样的方法(包括返回值类型,方法名,参数列表)(同名 同参 不同类 (修饰符权限不能缩小 返回值必须相同))
为什么要方法重写
- 当父类中的方法无法满足子类需求的时候,需要方法重写
- 当子类具有特有的功能的时候,就需要方法重写
方法重写的注意事项
- 重写的方法必须要和父类一模一样(包括返回值类型,方法名,参数列表)
- 重写的方法可以使用@Override注解来标识
- 子类中重写的方法的访问权限不能低于父类中方法的访问权限
权限修饰符 : private < 默认(什么都不写) < protected < public
重写的应用
- 当子类需要父类的功能,而功能的主体子类还有自己特有的内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类自己特有的内容。
方法重写
class Pet{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Pet{
public void move(){
System.out.println("狗可以跑和走");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
}
}
方法重载
class Pet{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Pet{
public void move(){
System.out.println("狗可以跑和走");
}
public void bark(){
System.out.println("狗可以吠叫");
}
}
public class TestDog{
public static void main(String args[]){
Pet pet = new Pet(); // Pet 对象
Pet1 b = new Dog(); // Dog 对象
a.move();// 执行 Pet 类的方法
b.move();//执行 Dog 类的方法
b.bark();
}
}
总结
重载
- 同一个类中
- 方法名相同,参数列表不同(参数顺序、个数、类型)
- 方法返回值、访问修饰符任意
- 与方法的参数名无关
重写
- 有继承关系的子类中
- 方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值相同
- 访问修饰符,访问范围需要大于等于父类的访问范围
- 与方法的参数名无关