zoukankan      html  css  js  c++  java
  • 方法的重载与方法的重写

    方法重载是Java中一个很重要的概念,它是类名的不同表现形式。构造函数其实也是重载的一种,还有一种是方法的重载。

    1 package day02;
     2 
     3  
     4 
     5 public class Apple {
     6 
     7     int num;
     8 
     9     String color;
    10 
    11     public Apple() {
    12 
    13     }
    14 
    15 
    16     public Apple(int num, String color) {
    17 
    18     }
    19 
    20 
    21     public int getApple(int num) {
    22 
    23         return num;
    24 
    25     }
    26  
    27     public String getApple(String color) {
    28 
    29         return color;
    30 
    31     }
    32 
    33 
    34 }

    如上所示,有两种重载的方式,一种是Apple构造函数的重载,一种是getApple方法的重载。那有很多相同的名字,Java是如何知道调用哪个方法呢?每个重载的方法都有独一无二的参数列表。其中包括参数的类型、顺序、参数数量等,满足一种一个因素就构成了重载的必要条件。

    重载的条件:

    第一,方法名称必须相同。

    第二,参数列表必须不同(个数不同或类型不同,参数类型排列顺序不同等)。

    第三,方法的返回类型可以相同也可以不同。

    第四,仅仅返回类型不同不足以成为方法的重载。

    第五,重载是发生在编译时的,因为编译器可以根据参数的类型来选择使用哪个方法。

    方法的重写与重载名字很相似,但是完全不同的东西。方法的重写描述的是子类对父类直接的。重载指的是同一类中的,例如:

     1 package day02;
     2 
     3  
     4 
     5 class Banana extends Fruit {
     6 
     7     @Override
     8 
     9     public void eat() {
    10 
    11         System.out.println("eat banana");
    12 
    13     }
    14 
    15 }
    16 
    17  
    18 
    19 class Fruit {
    20 
    21     public void eat() {
    22 
    23         System.out.println("eat fruit");
    24 
    25     }
    26 
    27 }

    可以看到,子类Banana中的方法eat与父类Fruit中的方法eat方法名相同。重写的原则:

    第一,重写的方法必须和父类保持一致,包括返回值类型、方法名、参数列表都一样。

    第二,重写的方法使用@Override注解来标识。

    第三,子类中重写方法的访问权限不能低于父类中方法的访问权限。

    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    java利用freemarker导出world
    各种Java加密算法
    SM2的非对称加解密java工具类
    Mybatis分页插件--------Pagehelper
    JS实现浏览器打印、打印预览
    java大文件断点续传
    数字证书在web应用中实现登陆
    CA数字加密解密Demo
    使用数字证书进行签名和加密解密
    一个有趣的模拟光照的shader(类似法线贴图)
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/14320362.html
Copyright © 2011-2022 走看看