博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象----方法的重载
阅读量:6709 次
发布时间:2019-06-25

本文共 4960 字,大约阅读时间需要 16 分钟。

方法的重载

方法(函数)

返回值类型 函数名(参数类型 形式参数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());

 

转载于:https://www.cnblogs.com/justdoitba/p/7222279.html

你可能感兴趣的文章
我的友情链接
查看>>
无聊,用c写了个后台扫描
查看>>
洛谷——P2434 [SDOI2005]区间
查看>>
WDS+MDT+WAIK简单部署Win7之捕捉映像
查看>>
致即将逝去的青春
查看>>
haproxy,能够实现将来自用户的80端口的http请求转发至后端8000上的server服务
查看>>
Windows Server 2008 如何去除“IE 增加的安全配置”
查看>>
Emeditor自动切换到单元格选择模式
查看>>
awk学习
查看>>
我的友情链接
查看>>
mongodb中的副本集搭建实践
查看>>
Javascript 实现形如Extjs中的“关闭并带回”
查看>>
resources.resx相关
查看>>
oracle中如何用提示符显示用户状态?
查看>>
CentOS转的服务器磁盘规划
查看>>
Oracle基础知识之物理存储结构
查看>>
我的友情链接
查看>>
哈佛结构与冯?诺伊曼结构区别
查看>>
耶鲁大学心态 ,送给正在奋斗的人 !
查看>>
磁盘空间耗尽(deleted)
查看>>