重写
子类在继承父类方法的基础上,对父类方法的实现进行覆盖的操作叫做重写,子类的重写方法必须和父类的被重写方法具有相同的方法名称,参数列表和返回类型,并且重写方法不能使用比被重写方法更严格的访问权限,比如父类的方法是public,子类的重写方法就不能是private。
class Animal {
public void move(){
System.out.println("animal move!");
}
}
class Dog extends Animal{
public void move(){
System.out.println("dog run!");
}
}
public class Test {
public static void main(String args[]){
Animal a = new Animal();
Animal b = new Dog();
a.move();
b.move();
}
}
重载
在同一个类中,多个方法有相同的方法名,但是参数列表不同,这种同名不同参的方法就是重载,方法重载可以修改返回值类型,也可以修改访问权限,但要注意不能值修改这两者,如果只是修改返回值类型或访问权限,那调用方根本无法区分实际调用的是哪个方法,简而言之,只要能够区分开方法,不会造成混淆,则构成重载。
public class Test {
public int name(int x) {
return x * 2;
}
public int name(int x,int y){
return x + y;
}
public static void main(String[] args) {
Test a = new Test();
System.out.println(a.name(5));
System.out.println(a.name(2,3));
}
}
重写和重载的区别
方法的重写和重载是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。