欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

面向对象的知识掌握之带参方法及方法重载

程序员文章站 2023-12-09 20:25:15
在学习下面的知识的时候,要注意把我的前一篇文章回顾一下哦学会这些掌控雷电,面向对象之类与对象一、带参方法带参方法无非就是在方法名之后加上了参数(形式参数:即参数的形式),注意里面写入的是参数类型与参数名称,举个例子:pulic void zhaZhi(String fruit){//编写内容}这里面的String fruit 即是带参方法的重点!总体上:1.定义带参数的方法:<访问修饰符>返回类型<方法名>(<形式参数列表>){//方法的主体}2.调...

在学习下面的知识的时候,要注意把我的前一篇文章回顾一下哦学会这些掌控雷电,面向对象之类与对象

一、带参方法

带参方法无非就是在方法名之后加上了参数(形式参数:即参数的形式),注意里面写入的是参数类型与参数名称,举个例子:
pulic void zhaZhi(String fruit){
//编写内容
}
这里面的String fruit 即是带参方法的重点!
总体上:
1.定义带参数的方法:<访问修饰符>返回类型<方法名>(<形式参数列表>){
//方法的主体
}
2.调用带参数的方法
对象名.方法名(参数1,参数2…)重点:参数可以有多个!
pulic void zhaZhi(String fruit ,int num){
System.out.print(num+“杯”+fruit+“汁”);
}
在测试类的调用就如下:
对象名.zhaZhi(fruit,num);

二、带参方法使用注意事项

  1. 方法定义处的参数叫形式参数(形参),方法调用处传的值叫实际参数(实参)
  2. 带参方法,参数可以有多个,不同参数之间用逗号隔开
  3. 带参方法的参数名字可以随意取,符合变量命名规则
  4. 形参名字和实参名字可以不一样,但数据类型要一致,个数要一样,顺序要一样
  5. 方法有没有参数和方法有没有返回值,是两码事,毫无关系!

三、带参方法的应用

使用带参方法实现学员信息管理
增加学员姓名,并且指定区间查找,查找某个学生姓名并显示
!!!明确出属性与方法,一步步来。在方法里写逻辑
找到要定义的属性:学生姓名
找到要定义的方法:增加学生,显示姓名,查找学生
接下来先建立学员信息类:StudentMgr

//学生管理系统
public class StudentMgr {
    //属性:存放学生姓名的数组
    String[] names = new String[30];

    //方法1.增加学生姓名
    public void addName(String name) {
        for (int i = 0; i < names.length; i++) {
            if (names[i] == null) {
                names[i] = name;
                break;
            }
        }
    }

    //方法2.在固定区间内查找学生姓名
    //start:查找起始位置
    //end:查找结束位置
    //name:查找学生姓名
    public boolean searchName(int start, int end, String name) {
        boolean flag = false;
        for (int i = start - 1; i < end; i++) {
            if (name.equals(names[i])) {
                flag = true;
                break;
            }

        }
        return flag;
    }

    //方法3.显示学员信息
    public void showInfo(){
        System.out.println("本班学员列表:");
        for (int i = 0; i < names.length; i++) {
            if (names[i] != null){
                System.out.println(names[i]+"\t");
            }
        }
    }
}

接下来建立测试类:TestStudengMgr

import java.util.Scanner;

//信息管理系统测试类
public class TestStudentMgr {
    public static void main(String[] args) {
        //创建对象
        StudentMgr s = new StudentMgr();
        //调用属性和方法
        Scanner input = new Scanner(System.in);
        for (int i = 0; i <5 ; i++) {
            System.out.println("请输入第"+(i+1)+"个同学的姓名");
            String name =input.next();
            s.addName(name);
        }
        s.showInfo();
        //查找某个学生的信息
        System.out.println("请输入要查找的起始位置");
        int start =input.nextInt();
        System.out.println("请输入要查找的结束位置");
        int end =input.nextInt();
        System.out.println("请输入要查找的学生姓名");
        String findName = input.next();
        boolean flag = s.searchName(start,end,findName);
        if (flag ){
            System.out.println("恭喜您查找到了");
        }else {
            System.out.println("没在该范围内查找到");
        }
    }


}

运行结果如下:
面向对象的知识掌握之带参方法及方法重载

四、方法传参

–基本&引用数据类型
当参数为基本数据类型时(int,double,boolean,float),传参时操作 传递的是变量的值, 改变一个变量的值并不会影响另一个变量的值。引用数据类型(类、数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用

—对象数组:传出的是一个数组
案例:使用学员对象数组作为参数,实现学员成绩修改。如果学员成绩小于60,将其成绩提高两分。

作答:首先我们先创造一个学生类给出学生的属性方法

public class Student {
    //属性:姓名,年龄,成绩
    String name;
    int age;
    double score;

    //方法:输出个人信息
    public void ShowInfo(){
        System.out.println(name+"的成绩是"+score);
    }
}

之后我们再建一个类,这个类用来操作学员的成绩,即题目的要求:低于60提高两分。

public class modifyStuScore {
    public void modifyStuScore(Student[] stus){
        for (int i = 0; i < stus.length; i++) {
            if (stus[i].score<60){
                stus[i].score+=2;
            }
        }
    }
    public void showStus(Student[] stus){
        for (Student stu : stus) {
            stu.ShowInfo();
        }
    }
}

最后建立测试类调用方法用来输出的学生及成绩

public class TestStudent {
    public static void main(String[] args) {
        modifyStuScore m =new modifyStuScore();
        Student s1=new Student();
        s1.name="张三";
        s1.score=43;
        Student s2=new Student();
        s2.name="李四";
        s2.score=67;
        Student s3=new Student();
        s3.name="王五";
        s3.score=100;
        Student[] stus =new Student[3];
        stus[0]=s1;
        stus[1]=s2;
        stus[2]=s3;
        m.showStus(stus);
        m.modifyStuScore(stus);
        System.out.println("**********改变后的成绩*************");
        m.showStus(stus);
    }
}

最后输入的话如下:

张三的成绩是43.0
李四的成绩是67.0
王五的成绩是100.0
**********改变后的成绩*************
张三的成绩是45.0
李四的成绩是67.0
王五的成绩是100.0

五、构造方法

1.无返回值类型
2.方法名与类名相同

目的:完成对象初始化
系统默认提供无参构造方法
可以指定参数
无参例如:public Student() {
}

那么带参构造方法是什么呢?
pulic Student(String n , int s){
name=n;//把n赋值给name
socre=s://把s赋值给socre
}

但是往往,我们会选择使用this即当前对象来赋值
例如:public Student(String name,int score){
this.name = name;
this.score = score;
}

那么,引申一下this关键字的用法
调用属性
this.health=100;
调用方法
this.print();
调用构造方法
this();
this(“小黑”,100);

使用带参构造方法,则系统不会自动提供无参构造方法

六、方法重载

构造方法重载:
方法名相同
参数项不同
与返回值、访问修饰符无关

方法重载:
同一个类中
方法名相同
参数个数或类型不同
与返回值、访问修饰符无关
实例:
实现简易计算器,分别实现两个整数、三个浮点数的加法运算

public class Calc {
    //加法:两个整数
    public void add(int num1,int num2){
        int sum =num1+num2;
        System.out.println(num1+"+"+num2+"="+sum);
    }
    //加法:两个浮点数
public void add(double num1 ,double num2){
        double sum =num1+num2;
    System.out.println(num1+"+"+num2+"="+sum);
}
    //加法:三个浮点数
    public void add(double num1,double num2,double num3){
        double sum =num1+num2+num3;
        System.out.println(num1+"+"+num2+"+"+num3+"="+sum);
    }

    public static void main(String[] args) {
        Calc c =new Calc();
        c.add(4,5);
        c.add(5.0,7.0);
        c.add(5.0,8.8,9.7);
    }
}

很明显的能看出同是使用了add方法,但是参数个数以及类型的不同导致了程序能够正常的运行,这就是方法重载。

七、成员变量和局部变量

变量声明的位置决定变量作用域
变量作用域确定可在程序中按变量名访问该变量的区域

在类中声明的变量为全局变量,在方法中声明的变量为局部变量成员变量的作用域为整个类,而局部变量的作用域是只有它的方法中。

初始值不同:
java会给成员变量一个初始值
java不会给局部变量赋予初始值,必须初始化赋值后才能使用

在不同的方法中,可以有同名的局部变量,互相独立。但是在同一个方法中,不可以有同名的局部变量

在同一个类中,局部变量和全局变量可以使用同名!

本文地址:https://blog.csdn.net/weixin_42507474/article/details/106983897