java中重载(overload)和重写(override)详解,子类的方法算重载还是重写?

it2023-10-25  76

重写(override):

相关定义: 1.必须是子类继承父类,然后创建一个和父类相同的方法 2.这里的相同是指,函数名相同,参数列表相同,包括参数列表的类型和顺序以及数量 3.子类重写的方法相比父类中的方法, ①在访问权限上必须大于等于父类(里氏替换原则:在父类能使用的地方,子类能够代替父类) ②在抛出异常方面,抛出异常必须小于等于父类 ③在返回值类型方面,必须小于等于父类 4.如果子类中的方法访问权限为private,那就不是重写

举例:

父类:

public class Father { public void info(String name,String age){ System.out.println("my name is"+name+"and i'm "+age+"old"); } }

子类:

public class Son extends Father { @Override public void info(String name, String age) { System.out.println("这就是重写"); } }

重载(overload):

相关定义: 1.必须是在同一个类中 2.方法的重载和返回值类型以及访问修饰无关,只和参数列表有关 3.传入参数的类型不同或者数量不同或者顺序不同都算方法的重载

举例:

同一个类中:

public class Father { public void info(String name,String age){ System.out.println("my name is"+name+"and i'm "+age+"old"); } public void info(String name, String age,String sonname){ System.out.println("这是方法的重载"); } }

在一个子类中

public class Father { public void info(String name,String age){ System.out.println("my name is"+name+"and i'm "+age+"old"); } } ================================= ================================= public class Son extends Father { public void info(String name, int age) { System.out.println("这也是重载"); } }

关于重载:

重载根本与是否继承无关,重载只针对一个类而言。一个类中有多个同名方法,不管这些方法是这类原生的,还是继承而来,只要可见可访问,其参数列表不同,都称为重载。

最新回复(0)