区别点 | 重载方法 | 重写方法 |
---|---|---|
参数列表 | 必须修改 | 一定不能修改 |
返回类型 | 可以修改 | 一定不能修改 |
异常 | 可以修改 | 可以减少或删除,一定不能抛出新的或者更广的异常 |
访问 | 可以修改 | 一定不能做更严格的限制(可以降低限制) |
public class Person { public static void test(){ System.out.println("父类方法"); } } public class Student extends Person{ public static void test(){ System.out.println("子类方法"); } } public class Application { //一个项目只有一个main方法 public static void main(String[] args) { Person person = new Person(); person.test(); //person类 Student student = new Student(); student.test(); //student类 //父类的引用指向子类 //方法的调用只和左边相关,定义的数据类型无关 Person person1 = new Student(); person1.test(); //person类 } } //父类方法 子类方法 父类方法
public class Person { public void test(){ System.out.println("父类方法"); } } public class Student extends Person{ @Override public void test() { //方法重写 //super.test(); System.out.println("子类方法"); } } public class Application { //静态方法和非静态方法是有区别的 public static void main(String[] args) { Person person = new Person(); person.test(); //person类 Student student = new Student(); student.test(); //student类 //父类的引用指向子类 //方法的调用只和左边相关,定义的数据类型无关 //子类重写的父类的方法 Person person1 = new Student(); person1.test(); } } //父类方法 子类方法 子类方法
方法的重写 (Overriding) 和重载 (Overloading) 是 java 多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。