Java重载和重写的区别

Posted 116970u

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java重载和重写的区别相关的知识,希望对你有一定的参考价值。

技术图片

重载(Overloading)

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

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

  (1):方法名必须相同

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

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

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

代码示例:

 1 public class Test1 
 2     public void out()
 3         System.out.println("参数"+null);
 4     
 5     //参数数目不同
 6     public void out(Integer n)
 7         System.out.println("参数"+n.getClass().getName());
 8     
 9  
10     //参数类型不同
11     public void out(String string)
12         System.out.println("参数"+string.getClass().getName());
13     
14  
15     public void out(Integer n ,String string)
16         System.out.println("参数"+n.getClass().getName()+","+string.getClass().getName());
17     
18     //参数顺序不同
19     public void out(String string,Integer n)
20         System.out.println("参数"+string.getClass().getName()+","+n.getClass().getName());
21     
22     
23     public static void main(String[] args) 
24         Test1 test1 = new Test1();
25         test1.out();
26         test1.out(1);
27         test1.out("string");
28         test1.out(1,"string");
29         test1.out("string",1);
30     
31 

  技术图片

 

 

重写(Overriding)

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

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

  重写的特征:

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

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

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

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

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

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

代码示例:

 1 class Test
 2     public void out()
 3         System.out.println("我是父类方法");
 4     
 5 
 6  
 7 public class Test1 extends Test
 8     @Override
 9     //方法签名完全一致
10     public void out() 
11         System.out.println("我是重写后的子类方法");
12     
13  
14     public static void main(String[] args) 
15         Test test = new Test();
16         test.out();
17         test = new  Test1();
18         test.out();
19     
20 

  技术图片

 

 

参考:https://blog.csdn.net/qq_42014192/article/details/89707483

以上是关于Java重载和重写的区别的主要内容,如果未能解决你的问题,请参考以下文章

重写和重载的三点区别

请简述重载和重写的区别

请简述重载和重写的区别

java中重载和重写的区别是啥?

重写和重载的区别

重载和重写有啥区别