27_重载

59 篇文章 2 订阅
22 篇文章 1 订阅

27_重载

方法重载的概念

  • 若方法名相同,参数列表不同,这样的方法之间构成重载关系(Overload)。

重载的体现形式

  • 方法重载的主要形式体现在:参数的个数不同、参数的类型不同、参数的顺序不同,与返回值类型(不考虑接收返回值的情况下,两个方法的效果是一样的)和形参变量名(虽然只是变量名不一样,但是其它的都一样,根本原因,我在main方法中调用的时候无法分清到底调用的是哪一个方法,因为传递的实参两个方法都能接)无关,但建议返回值类型最好相同(如果方法的返回值都相同,无论我调用哪个版本,都是统一的处理方式)。

  • 判断方法能否重载的核心:调用方法时能否加以区分

  • /*
    	编程实现方法重载主要形式的测试
     */
     public class OverloadTest {
    	 
    	 // 自定义成员方法
    	 void show(){
    		 System.out.println("show()");
    	 }
    	 
    	 void show(int i){ // OK 可以重载		具体体现在方法参数的个数不同
    		 System.out.println("show(int)");
    	 }
    	 
    	 void show(int i, double d){ // OK 可以重载		具体体现在方法参数的个数不同
    		 System.out.println("show(int, double)");
    	 }
    	 
    	 void show(int i, int j){ // OK 可以重载		具体体现在方法参数的类型不同
    		 System.out.println("show(int, int)");
    	 }
    	 
    	 void show(double d, int i){ // OK 可以重载		具体体现在方法参数的顺序不同
    		 System.out.println("show(double, int)");
    	 }
    	 
    	 /* void show(double a, int b){ // error	与参数的变量名无关 不可以重载     错误: 已在类 OverloadTest中定义了方法 show(double,int)
    		 System.out.println("show(double, int)");
    	 } */
    	 
    	 /* int show(double d, int i){ // error	与返回值类型无关 不可以重载     错误: 已在类 OverloadTest中定义了方法 show(double,int)
    		 System.out.println("show(double, int)");
    	 } */
    	 
    	 public static void main(String[] args) {
    		 
    		 // 1、声明OverloadTest类型的引用指向该类型的对象
    		 OverloadTest ot = new OverloadTest();
    		 // 2、调用show方法
    		 ot.show();
    		 ot.show(66);
    		 ot.show(66, 66.66);
    		 ot.show(66, 188);
    		 ot.show(3.14, 188);
    	 }
     }
    
    
    
    
    
    
    
    
    --------------------------------------------
    D:\拉勾学习\JavaBasics笔记\第一阶段_JavaSE\模块二_Java面向对象编程\Code\任务2:方法和封装>java OverloadTest
    show()
    show(int)
    show(int, double)
    show(int, int)
    
    D:\拉勾学习\JavaBasics笔记\第一阶段_JavaSE\模块二_Java面向对象编程\Code\任务2:方法和封装>javac OverloadTest.java
    OverloadTest.java:27: 错误: 已在类 OverloadTest中定义了方法 show(double,int)
             void show(double a, int b){ // OK 可以重载             具体体现在方法参数的顺序不同
                  ^
    1 个错误 
    
     Peron// 自定义成员方法实现年龄增长一岁的行为
    	 void grow() {
    		 age++;
    	 }
    	 
    	 // 自定义成员方法实现年龄增长参数指定数值的行为
    	 void grow(int i) {
    		 age += i;
    	 }
    	 
    	 main 方法
    	  // 4、实现重载方法的调用和测试
          Person p4 = new Person("佘儿", 21);
          p4.show(); // 我是佘儿,今年21岁了!
          p4.grow(); // 我是佘儿,今年22岁了!
          p4.show();
          p4.grow(15);
          p4.show(); // 我是佘儿,今年37岁了!
    

练习题目

  • 编程实现为Point类添加重载的成员方法:

    • up() - 实现纵坐标减1的功能。
    • up(int dy) - 实现纵坐标减去参数指定数值的功能
  • 测试重载方法的调用规则

    Point// 自定义成员方法实现纵坐标减1的功能。
    	 void up() {
    		 y --;
    	 }
    	 
    	 // 自定义成员方法实现纵坐标减去参数指定数值的功能
    	 void up(int dy) {
    		 y -= dy;
    	 }
    	 
    	 
    	 main 方法
    	 // 3、测试重载方法的调用规则
         p2.show(); // 横坐标是:3,纵坐标是:5
         p2.up();
         p2.show(); // 横坐标是:3,纵坐标是:4
         p2.up(2);
         p2.show(); // 横坐标是:3,纵坐标是:2
    

重载的实际意义

  • 方法重载的实际意义在于调用者只需要记住一个方法名就可以调用各种不同的版本,来实现各种不同的功能。
  • 如:java.io.PrintStream类中的println方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值