当前位置:   article > 正文

java方法重写(重点讲),方法重载

java方法重写(重点讲),方法重载

目录

 一、方法重载

二、方法重写


 一、方法重载

        定义:一个类中,出现多个方法的名称相同,但是它们的形参列表是不同的,那么这些方法就称为方法重载了。
        注意:一个类中,只要一些方法的名称相同、形参列表不同,那么它们就是方法重载了,其它的都不管(如:修饰符,返回值类型是否一样都无所谓)。

形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。

        应用场景:开发中我们经常需要为处理一类业务,提供多种解决方案,此时用方法重载来设计是很专业的

二、方法重写

        定义:当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法,这就是方法重写。
        注意:重写后,方法的访问,Java会遵循就近原则。

 

上面代码说明方法重写了,是一个案例,小伙伴们可以看一下,多在继承中使用。

一些方法重写的注意事项:

  • 重写小技巧:使用Override注解,他可以指定java编译器,检查我们方法重写的格式是否正确,代码可读性也会更好(人家一眼就知道这个方法是重写的)。

  • 子类重写父类方法时,访问权限必须大于或者等于父类该方法的权限( public > protected>缺省)。(图上的字有点问题,应该是大于等于A类的原方法)    
  • 重写的方法返回值类型,必须与被重写方法的返回值类型一样,或者范围更小。
  • 私有方法、静态方法不能被重写,如果重写会报错的。

注意事项这么多哈哈哈,那就把原来的方法的声明不变(参数,返回值,方法名称啥的),就改变里面的方法内容 。即“声明不变,内容重写”。

应用场景:当子类觉得父类的方法不好用,或者不满足自己的需求时,就可以用方法重写。

例子:子类重写Object类的toString()方法,以便返回对象的内容。

        我们直接输出对象,其实默认会调object类的toString方法,然后返回该对象的地址,但是我们拿着这个地址也没用,所以会重写这个toString方法来让其返回该对象的内容,才是我们一般所需要的。(注:object类是默认继承的,重写的方法是就近调的,所以会调用重写的toString方法)

例子:

写了一个Student类,定义了name,age两个成员变量,以及有参无参构造器,还有两个成员变量的getter,setter方法,齐活!(这些是标配),然后重写了toString方法,让其按照想要展示格式输出变量的值,而不是地址。重写toString方法可以自己写,idea也有快捷方式,右键,选择Generate,选择toString(),选择想要重写(展示)的变量,点击ok即可。步骤如下图所示,最后一张是编译器写好的toString方法。

在Test方法中创建对象,并赋值,并输出,看是否调用了重写的toString方法。结果输出显示是调用成功了。以下附上两个类的代码:

Test.java

  1. public class Test {
  2. public static void main(String[] args) {
  3. // 创建一个Student对象,直接输出它
  4. Student student= new Student();
  5. student.setName("张三");
  6. student.setAge(19);
  7. System.out.println(student);
  8. }
  9. }

Student.java

  1. public class Student {
  2. private String name;
  3. private int age;
  4. //无参,有参构造器
  5. public Student() {
  6. }
  7. public Student(String name, int age) {
  8. this.name = name;
  9. this.age = age;
  10. }
  11. //getter,setter方法
  12. public String getName() {
  13. return name;
  14. }
  15. public void setName(String name) {
  16. this.name = name;
  17. }
  18. public int getAge() {
  19. return age;
  20. }
  21. public void setAge(int age) {
  22. this.age = age;
  23. }
  24. // 重写object类的toString方法
  25. @Override
  26. public String toString(){
  27. return "Student{"+ "name:"+name+",age:"+age+"}";
  28. }
  29. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/505472
推荐阅读
相关标签
  

闽ICP备14008679号