zoukankan      html  css  js  c++  java
  • Java面向对象-方法的重载

    Java面向对象-方法的重载

    所谓方法的重载,

    类里面有两个或者多个重名的方法,但是方法的参数个数、类型、顺序至少有一个不一样,这时候局构成方法重载;

    上代码:

     1 package com.java1234.chap03.sec03;
     2  
     3 public class Demo01 {
     4  
     5     int add(int a,int b){
     6         System.out.println("方法一");
     7         return a+b;
     8     }
     9      
    10     /**
    11      * 方法的重载,参数个数不一样
    12      * @param a
    13      * @param b
    14      * @param c
    15      * @return
    16      */
    17     int add(int a,int b,int c){
    18         System.out.println("方法二");
    19         return a+b+c;
    20     }
    21      
    22     /**
    23      * 方法的重载,参数的类型不一样
    24      * @param a
    25      * @param b
    26      * @return
    27      */
    28     int add(int a,String b){
    29         System.out.println("方法三");
    30         return a+Integer.parseInt(b);
    31     }
    32      
    33     /**
    34      * 参数类型个数一样,返回值类型不一样 不算重载,直接会报错,说方法重名
    35      * @param args
    36      */
    37     /*long add(int a,int b){
    38         return a+b;
    39     }*/
    40      
    41     public static void main(String[] args) {
    42         Demo01 demo=new Demo01();
    43         System.out.println(demo.add(1, 2));
    44         System.out.println(demo.add(1, 2,3));
    45         System.out.println(demo.add(1, "3"));
    46     }
    47 }

    运行结果:

    方法一
    3
    方法二
    6
    方法三
    4

    这里有个注意点 假如参数个数和类型一样,返回值不一样,不能算重载,直接是编译出错,编译器认为是方法重复了。

    具体原因:我们给下实例代码:

     1 package com.java1234.chap03.sec03;
     2  
     3 public class Demo01 {
     4  
     5     int add(int a,int b){
     6         System.out.println("方法一");
     7         return a+b;
     8     }
     9  
    10     /**
    11      * 参数类型个数一样,返回值类型不一样 不算重载,直接会报错,说方法重名
    12      * @param args
    13      */
    14     long add(int a,int b){
    15         return a+b;
    16     }
    17      
    18     public static void main(String[] args) {
    19         Demo01 demo=new Demo01();
    20         int m=demo.add(1, 2);  // 调用返回值是int类型的方法
    21         long n=demo.add(1, 2); // 调用返回值是long类型的方法
    22          
    23         demo.add(1, 2); // 假如这样些  编译器晕了,你TM是调用返回值是int类型还是long类型的方法
    24          
    25     }
    26 }

    假如调用方法 指定返回值类型,我们可以确定是调用的是某个方法,比如int m=demo.add(1,2) 因为是返回值m是int类型 那肯定

    调用的是int add(int a,int b){ 方法  long n=demo.add(1, 2) 因为返回值n是long类型,那肯定调用的long add(int a,int b){方法

    但是,假如直接 demo.add(1,2); 编译器就SB了,你TM是调用返回值是int类型的方法,还是返回值是long类型的方法;

  • 相关阅读:
    redis教程(三)-----redis缓存雪崩、缓存穿透、缓存预热
    dubbo入门学习(三)-----dubbo整合springboot
    dubbo入门学习(二)-----dubbo hello world
    spring cloud深入学习(十二)-----Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式
    spring cloud深入学习(十三)-----使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪
    C#关键字params
    C#的lock关键字
    C#的yield关键字
    C#关键字ref和out
    C#的初始化器
  • 原文地址:https://www.cnblogs.com/eaglezb/p/5969308.html
Copyright © 2011-2022 走看看