首页天道酬勤java重载和重写,重载和重写有哪些区别

java重载和重写,重载和重写有哪些区别

张世龙 05-05 14:38 13次浏览

重写(Overriding )

重载(Overloading )

班级的数量

父子类、接口和实现类

本班

方法名称

一致

一致

参数列表

绝对不能修改

必须修改

返回类型

绝对不能修改

可以修改

异常

可以减少或删除,但不能扩展

可以修改

重载重载发生在本类,方法名相同,参数列表不同,与返回值无关,只和方法名,参数列表,参数的类型有关.

重载(Overload):首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。

(1):方法名必须相同

(2):方法的参数列表一定不一样。

(3):访问修饰符和返回值类型可以相同也可以不同。

其实简单而言:重载就是对于不同的情况写不同的方法。 比如,同一个类中,写不同的构造函数用于初始化不同的参数。

public class Test1 { public void out () { System.out.println ('参数' null ); //参数数量不同的publicvoidout(integern ) ({ System.out.println ) '参数' n.getClass ).getName ) ); //参数类型不同的public void out (字符串字符串) { System.out.println (参数' string.getClass ).getName ); }publicvoidout(integern,String string ) { System.out.println (参数(n.getClass ).getName ),string.gettln //参数顺序不同的publicvoidout(stringstring,Integer n ) { System.out.println (参数(string.getClass ).getName ),)。 } publicstaticvoidmain (字符串[ ] args ) ) { Test1 test1=new Test1; test1.out (; test1.out(1; test1.out (字符串); test1.out(1,'字符串'; test1.out('string ',1 ); }

重写(Overriding )重写发生在父类子类之间,比如所有类都是继承与Object类的,Object类中本身就有equals,hashcode,toString方法等.在任意子类中定义了重名和同样的参数列表就构成方法重写.

重写(override):一般都是表示子类和父类之间的关系,其主要的特征是:方法名相同,参数相同,但是具体的实现不同。

重写的特征:

(1):方法名必须相同,返回值类型必须相同

(2):参数列表必须相同

(3):访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。

(4):子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。

(5):构造方法不能被重写,

简单而言:就是具体的实现类对于父类的该方法实现不满意,需要自己在写一个满足于自己要求的方法。

class Test{ public void out () ({ System.out.println ) )“我是父方法”); } public class test1 extends test { @ override//方法签名完全匹配的public void out () { System.out.println (我是重写后子类的方法) } } publicstaticvoidmain (字符串[ ] args ) ) { Test test=new Test; test.out (; test=new Test1 (; test.out (; }

java重写方法规则,java多态