Java面向对象-方法与方法重载

本文详细解读了方法的参数传递机制,介绍了如何通过参数类型和数量实现方法重载,以及构造方法的定义与重载规则。实例演示了如何在Machine类中操作字符串和整数,以及Students类中的学员信息管理。同时讲解了构造方法的不同形式和this关键字的使用。
摘要由CSDN通过智能技术生成

方法与方法重载

一、方法的参数传递

1.定义带参数的方法

<访问修饰符> 返回类型 <方法名>(<形式参数列表>){
				//方法的主体
}

2.调用带参数的方法

对象名.方法名(参数1,参数2,......,参数n)

3.传递参数时:
如果参数类型时基本数据类型,传递的是值。
如果参数类型时引用数据类型,传递的是地址。
4.基本数据类型和引用数据类型数据在传参时区别
基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。引用数据类型(类、数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用。
5.带多个参数的方法的案例
输出指定杯数的果汁

public class Machine {
    public void zha(String fruit){
        System.out.println(fruit+"汁");
    }
    public void zha(String fruit,int cup){
        System.out.println(cup+"杯"+fruit+"汁");
    }
    public void zha(String fruit,int cup,boolean isRun){
        if(isRun){
            System.out.println(cup+"杯"+fruit+"汁");
        }
    }
    public static void main(String[] args) {
        Machine m=new Machine();
        m.zha("苹果",3,true);
    }
}

实现学员信息管理
需求:增加学员姓名,在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功。

public class Students {
    public String[] names=new String[5];
    public void addName(String name){
        int flag=0;
        for (int i = 0; i < names.length; i++) {
            if (null==names[i]){
                names[i]=name;
                System.out.println(name+"成功进班,学号为:"+(i+1));
                flag++;
                break;
            }
        }
        if (flag==0){
            System.out.println("当前班级已满,请下次一定!");
        }
    }
    public void show(){
        System.out.print("[");
        for (int i = 0; i < names.length; i++) {
            if (null==names[i]){
                System.out.println("]");
                break;
            }else if (i==names.length-1){
                System.out.print(names[i]+"]");
                break;
            }
            System.out.print(names[i]+",");
        }
    }
    public int search(String name,int start,int end){
        if (name==null) return -names.length;
        int num=-1;
        if (start<0||end>=names.length||start>end){
            return -1;
        }
        for (int i = start; i <= end; i++) {
            if (name.equals(names[i])){
                num=i;
            }
        }
        return num;
    }
}
public class TestStudents {
    public static void main(String[] args) {
        Students ss=new Students();
        ss.addName("赵琪");
        ss.addName("王哲");
        ss.addName("黄哲");
        ss.addName("王磊");
        ss.addName("乔正超");
        ss.addName("卢常帅");
        ss.show();
        String a="王哲";
        int rst=ss.search(a,-1,4);
        System.out.println(rst==-1?"未找到该学员":rst==-1*ss.names.length?"输入不能为空值":"在下标为"+rst+"位置找到学员"+a);
    }
}

二、构造方法重载

1.构造方法的定义

访问修饰符 构造方法名(){
	//初始化代码
}

2.构造方法重载
自定义构造方法:
方法名相同
参数项不同
与返回值、访问修饰符无关
(1)系统默认提供无参构造方法
(2)当类中定义了构造方法,原先系统默认提供无参构造方法不再提供
(3)构造方法的结构:
public 类名(){}//默认无参构造方法的结构
public 类名(参数列表){
一般来说,有参构造中的代码主要目的是为了给类中的属性赋值
}
this关键字:
      this代表本类
      this.属性名:可以指定当前类的属性(局部变量和属性名相同时)
      this.方法名():等于与方法名()
      this():构造器,必须出现在构造方法的第一行
成员变量和局部变量:
      成员变量=属性
      局部变量和成员变量同名时,在局部变量作用域内,局部变量优先级高
      成员变量范围时全类
      局部变量作用域只在结构体内
      成员变量有初始值,局部变量没有初始值
方法重载:
      同一个类中
      方法名相同
      参数列表不同
      与返回值、访问修饰符无关

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值