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

    方法的重载

    方法(函数)

    返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,….)

      程序代码
      return 返回值;

    其中:
    参数类型:就是该形式参数的数据类型。
    返回值:方法在执行完毕后返还给调用它的程序的数据。
    返回值类型:函数要返回的结果的数据类型。
    实参调用函数时实际传给函数形式参数的数据
    形式参数在方法被调用时用于接收外部传入的数据的变量

    方法的调用


    方法的重载

    方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可。 如:

     1 public class Test {
     2     public static void main(String [] args) {
     3         int isum;
     4         double fsum;
     5         isum=add(3,5);
     6         isum=add(3,5,6);
     7         fsum=add(3.2,6.5); 
     8     }
     9     public static int add(int x,int y) {
    10         reutrn x+y;
    11     }
    12     public static int add(int x,int y,int z) {
    13         return x+y+z;
    14     }
    15     public static double add(double x,double y){
    16         return x+y;
    17     }
    18 }


    重载方法的参数列表必须不同
    重载方法的返回值类型可以相同,也可以不同
    调用时根据方法的参数类型来区别。


    练习
    1.编写程序,定义三个重载方法并调用。方法名为mOL。
    三个方法分别接收一个int参数、两个int参数、一个字符串参数。分别执行平方运算并输出结果,相乘并输出结果,输出字符CallMOL串信息。
    在主类()的main方法中分别用参数区别调用三个方法。

     1 public class MethodOverload {
     2 
     3     /**
     4      * 定义三个重载方法并调用。方法名为mOL。
     5      * 三个方法分别接收一个int参数、
     6      * 两个int参数、
     7      * 一个字符串参数。
     8      * 分别执行平方运算并输出结果,相乘并输出结果,输出字符CallMOL串信息。
     9      */
    10     
    11     public void mOL(String str){ 
    12         System.out.println("CallMOL:" + str);
    13     }
    14     
    15     public  void mOL(int a, int b){
    16         System.out.println(a * b);
    17     }
    18     
    19     public void mOL(int a){
    20         System.out.println(a * a);
    21     }
    22     
    23 }
     1 public class TestMethodOverload {
     2     public static void main(String[] args) {
     3         
     4         mo.mOL(5);
     5         mo.mOL("abc");
     6         mo.mOL(3, 4);
     7         
     8      }    9 }  


    2.定义三个重载方法max,第一个方法求两个int值中的最大值,第二个方法求两个double值中的最大值,第三个方法求三个double值中的最大值,并分别调用三个方法。

        /**
        * 定义三个重载方法max,
        * 第一个方法求两个int值中的最大值,
        * 第二个方法求两个double值中的最大值,
        * 第三个方法求三个double值中的最大值,并分别调用三个方法。
        */
        public int max(int a, int b) {
            return a > b ? a : b;
        }
        
        public double max(double a, double b) {
            return a > b ? a : b;
        }
        
        public double max(double a, double b, double c) {
            return this.max(max(a, b), c);
        }
    public class TestMethodOverload {
        public static void main(String[] args) {
                MethodOverload mo = new MethodOverload();
    
                System.out.println(mo.max(1.1, 3.1));
                System.out.println(mo.max(1, 4, 3.1));
                System.out.println(mo.max(3, 5));    
        }  
    }

    构造方法的重载

    构造方法一般用来创建对象的同时初始化对象。如

    class Person{
      String name;
      int age;
      public Person(String n , int a){

         name=n; age=a;

      }
    }

    构造方法重载使得对象的创建更加灵活,方便创建各种不同的对象。
    构造方法重载举例:
    public class Person{
      public Person(String name, int age, Date d) {this(name,age);}
      public Person(String name, int age) {…}
      public Person(String name, Date d) {…}
      public Person(){…}
    }
    构造方法重载,参数列表必须不同

    构造方法重载举例

     1 public class Person {
     2   private String name;
     3   private int age;
     4   private Date birthDate;
     5   public Person(String name, int age, Date d) {
     6     this.name = name;
     7     this.age = age;
     8     this.birthDate = d;
     9   }
    10       public Person(String name, int age) {
    11           this(name, age, null); //this.name=name; this.age=age; 
    12         //this.birthDate=null;
    13       }
    14      public Person(String name, Date d) {
    15         this(name, 30, d);    //this.name=name; 
    16         this.age=30;this.birthDate=d;
    17     }
    18     public Person(String name) {
    19         this(name, 30);    //this.name=name; this.age=30;
    20     }
    21 }


    练习
    (1)定义Person类,有4个属性:String name; int age; String school; String major,
    (2)定义Person类的3个构造方法:
    第一个构造方法Person(String n, int a)设置类的name和age属性;
    第二个构造方法Person(String n, int a, String s)设置类的name, age 和school属性;
    第三个构造方法Person(String n, int a, String s, String m)设置类的name, age ,school和major属性;

     1 public class Person {
     2 
     3     private String name;
     4     private int age;
     5     private String school;
     6     private String major;
     7     
     8     public Person(String n, int a, String s, String m){
     9         this(n, a, s);
    10         major = m;
    11     }
    12     
    13     public Person(String n, int a, String s){
    14         this(n, a);
    15         school = s;
    16     }
    17     
    18     public Person(String n, int a){
    19         name = n;
    20         age = a;
    21     }
    22 
    23     public String getName() {
    24         return name;
    25     }
    26 
    27     public int getAge() {
    28         return age;
    29     }
    30 
    31     public String getSchool() {
    32         return school;
    33     }
    34 
    35     public String getMajor() {
    36         return major;
    37     }
    38 
    39     public void setName(String name) {
    40         this.name = name;
    41     }
    42 
    43     public void setAge(int age) {
    44         this.age = age;
    45     }
    46 
    47     public void setSchool(String school) {
    48         this.school = school;
    49     }
    50 
    51     public void setMajor(String major) {
    52         this.major = major;
    53     }    
    54 }

    (3)在main方法中分别调用不同的构造方法创建的对象,并输出其属性值。

        Person person = new Person("xiaoye", 1, "xiaoye", "Java");
       
        System.out.println(person.getName());
        System.out.println(person.getAge());
        System.out.println(person.getSchool());
        System.out.println(person.getMajor());
  • 相关阅读:
    FreeRTOS基础篇教程目录汇总
    【网络流24题】航空线路问题(费用流)
    【网络流24题】最长不下降子序列(最大流,动态规划)
    【网络流24题】魔术球问题(最大流)
    【BZOJ1926】粟粟的书架(主席树,前缀和)
    【网络流24题】最小路径覆盖问题(最大流)
    【网络流24题】试题库问题(最大流)
    【网络流24题】太空飞行计划问题(网络流)
    【网络流24题】星际转移问题(最大流)
    【BZOJ4736】温暖会指引我们前行(Link-Cut Tree)
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7222279.html
Copyright © 2011-2022 走看看