面向对象的知识掌握之带参方法及方法重载
在学习下面的知识的时候,要注意把我的前一篇文章回顾一下哦学会这些掌控雷电,面向对象之类与对象
一、带参方法
带参方法无非就是在方法名之后加上了参数(形式参数:即参数的形式),注意里面写入的是参数类型与参数名称,举个例子:
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);
二、带参方法使用注意事项
- 方法定义处的参数叫形式参数(形参),方法调用处传的值叫实际参数(实参)
- 带参方法,参数可以有多个,不同参数之间用逗号隔开
- 带参方法的参数名字可以随意取,符合变量命名规则
- 形参名字和实参名字可以不一样,但数据类型要一致,个数要一样,顺序要一样
- 方法有没有参数和方法有没有返回值,是两码事,毫无关系!
三、带参方法的应用
使用带参方法实现学员信息管理
增加学员姓名,并且指定区间查找,查找某个学生姓名并显示
!!!明确出属性与方法,一步步来。在方法里写逻辑
找到要定义的属性:学生姓名
找到要定义的方法:增加学生,显示姓名,查找学生
接下来先建立学员信息类: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