成员方法

成员方法

基本介绍

  • 在某些情况下,我们要需要定义成员方法(简称方法), 比如人类除了有一些属性外(年龄,

    姓名 ),我们人类还有一些行为比如:可以说话、跑步,通过学习,还可以做算术题。这时就

    要用成员方法才能完成。现在要求对Person类完善。

成员方法快速入门

Method01.java

  1. 添加speak成损方法,输出我是一只好人

  2. 添加cal01成员方法,可以计算从1+.+1000的结果

  3. 添加ca02成员方法,该方法可以接收一个数n,计算从1+.+n的结果

  4. 添加getSuml成员方法,可以计算两个数的和

public class Method01 {
  //编写一个main方法
  public static void main(String[] args) {
      //方法的使用
      //6.方法写好之后如果不去调用的话,不会生效方法里的内容
      //7.先创建对象,然后再去调用其方法即可
      Person02 p1 = new Person02();
      p1.speak();
      //创建对象之后,就会找Person类中的speak方法,找到之后就去使用
      p1.cal01();
      p1.cal02(5);
      //调用cal02方法同时给n一个5的赋值



      int returnRes = p1.getSum(50,20);
      //调用getSum方法, 同时给num1 num2赋值
      //方法返回的值赋值给returnRes
      System.out.println("getSum方法返回的值="+returnRes);
  }
}

class Person02{
  String name;
  int age;
  //方法(成员方法)
  //添加speak成员方法, 输出"我是一个好人"
  //1.public表示方法公开
  //2.void表示方法无返回值
  //3.speak()方法名称 ()形参列表目前为空
  //4.{}内部叫做方法体, 可以写我们要执行的代码,或者相关的功能
  public void speak(){
      System.out.println("我是一个好人");
      //5.表示我们的方法就是输出一段字符串
  }

  //添加cal01成员方法 可以计算从 1+...1000的计算结果
  public void cal01(){
      int res = 0;
      for (int i=0;i<=1000;i++){
          res += i;
      }
      System.out.println("计算结果:"+res);
      //输出循环的结果
  }
  //添加cal02方法,该方法可以接收一个数n,计算从1+n的结果
  //1.这里的(int n)为形参列表,表示当前有一个形参n,可以接收到用户的输入
  public void cal02(int n){
      int res = 0;
      for (int i=0;i<=n;i++){
          //这里的唯一变化就是,可以按照输入的次数完成循环
          res += i;
      }
      System.out.println("cal02的计算结果:"+res);
      //输出循环的结果
  }
  //添加getSum成员方法,可以计算两个数的和
  //1.public表示方法是公开的
  //2.int 表示方法执行之后 ,返回一个int值
  //3.getSum 方法名
  //4.(int num1,int num2)形参列表 ,2个形参 ,可以接收用户传入的两个数
  //5.return res return表示将res的值, 返回
  public int getSum(int num1,int num2){
      int res = num1 + num2;
      return res;

  }
}

方法调用小结 :

  1. 当程序执行到方法时,就会开辟一个独立 的空间(栈空间)

  2. 当方法执行完毕,或者执行到return语句 时,就会返回

  3. 返回到调用方法的地方

  4. 返回之后继续执行方法后面的代码

  5. 当main方法(栈)执行完毕之后 ,整个程序退出

成员方法的必要性

·为什么需要成员方法 ?

  • √看一个需求:

    请遍历一个数组,输出数组的各个元素值。

int [][]map = {(0,1,1),(1,1,1),(1,1,3)};

public class Method02 {
  public static void main(String[] args) {
      //请遍历一个数组,输出数组的各个元素值。
      int [][] map = {{0,0,1},{1,1,1},{1,1,3}};
      //遍历map
      //传统的解决方法就是直接遍历
      for (int i =0; i < map.length; i++){
          for (int j= 0;j < map[i].length;j++){
              System.out.print(map[i][j]+" ");
          }
          System.out.println();
          //每次遍历数组之后换行
      }
  }
}

可以发现使用这样的方式确实可以实现对于代码的遍历

但是如果要求是让你多遍历几次 的话就要写很多次代码

public class Method02 {
  public static void main(String[] args) {
      //请遍历一个数组,输出数组的各个元素值。
      int [][] map = {{0,0,1},{1,1,1},{1,1,3}};

      //使用方法完成输出
      Mytools tool = new Mytools();

      tool.printArr(map);
      //这里就将数组传入到形参
      tool.printArr(map);
      tool.printArr(map);
      //实现三次
      }
  }


//把输出的功能 ,写到一个类的方法中 ,然后调用这个方法即可
class Mytools {
  //方法,接收一个二维数组
  public void printArr(int[][] map) {
      System.out.println("==============");
      //对传入的map数组进行遍历输出
      for (int i = 0; i < map.length; i++) {
          for (int j = 0; j < map[i].length; j++) {
              System.out.print(map[i][j] + " ");
          }
          System.out.println();
      }
  }
}

使用这样的办法 ,就可以是实现对遍历多次 ,而不是写多次代码

 

成员方法的好处

  • 提高代码的复用性

  • 可以将实现的细节封装起来,然后供其他用户来调用即可。

成员方法的定义

public 返回数据类型 方法名(参数列表..){
//方法体语句;
return返回值;
}
//这里的public就是一种访问修饰符

 

  1. 形参列表:表示成员方法输入cal(intn) ,getSum(int num1 ,int num2)

  2. 数据类型(返回类型):表示成员方法输出,void表示没有返回值

  3. 方法主体:表示为了实现某一功能代码块

  4. return语句不是必须的。(例如void)

·注意事项和使用细节

MethodDetail.java

访问修饰符(作用是控制方法使用的范围)

如果不写访问修饰符就是默认访问 ,[四种 : public , protected ,默认(也就是不写) ,private]

---返回数据类型

  1. 一个方法最多只能有一个返回值 [思考,如何返回多个结果? 可以使用数组的方式返回]

  2. 返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)

  3. 如果方法要求有返回数据类型,则方法体中最后的执行语句必须为return值;而 且要求返回值类型必须和return的值类型一致或兼容

  4. 如果方法是void,则方法体中可以没有return语句,或者只写return:

  5. 遵循驼峰命名法,最好见名知义,表达出该功能的意思即可,比如得到两个数的和 getSum ,开发中按照规范命名

 

形参列表

  1. 一个方法可以有0个参数,也可以有多个参数,中间用逗号开,比如 getSum (int n1, int n2)

  2. 参数类型可以为任意类型,包含基本类型或引用类型,比如printArr(int[][]map)

  3. 调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数!【getSum】

    例如 需要传入的类型为int 我们可以传入byte ,byte类型会自动转换为int类型 ,这就是兼容类型

    但是兼容支支持向上兼容 ,不支持向下兼容 ,例如传入double的高精度参数

  4. 方法定义时的参数称为形式参数,简称形参;方法调用时的参数称为实际参数,简称实参,实 参和形参的类型要一致或兼容、个数、顺序必须一致![演示]

 

  1. 方法体里面写完成功能的具体的语句,可以为输入、输出、变量、运算、分支、循环、方法调用,但里 面不能再定义方法!即:方法不能嵌套定义。

public void f4(){
  pubilc void f5(){    
  }
}
//此时就会报错,非法的表达式的开始!

√方法调用细节说明

  1. 同一个类中的方法调用:直接调用即可。比如print(参数): 案演示:A类sayok调用print()

  2. 跨类中的方法A类调用B类方法:需要通过对象名调用。比如对象名方法名(参 数):案例演示:B类sayHello调用print()

  3. 特别说明一下:跨类的方法调用和方法的访问修饰符相关,先暂时这么提一下, 后面我们讲到访问修饰符时,再了解。

posted @ 2022-04-17 13:21  comia  阅读(214)  评论(0)    收藏  举报