• 非零基础自学Java (老师:韩顺平) 第7章 面向对象编程(基础部分) 7.2 成员方法


    非零基础自学Java (老师:韩顺平)

    ✈【【零基础 快速学Java】韩顺平 零基础30天学会Java】

    第7章 面向对象编程(基础部分)

    7.2 成员方法
    7.2.1 基本介绍

    在某些情况下,需要定义成员方法(简称方法)。比如人类:除了有一些属性外( 年龄,姓名…),我们人类还有一些行为比如:可以说话、跑步…,通过学习,还可以做算术题。这时就要用成员方法才能完成。

    7.2.2 成员方法快速入门

    举个栗子

    /**
     * ClassName: Person
     * date: 2022/9/2 15:11
     *
     * @author DingJiaxiong
     */
    public class Person {
        String name;
        int age;
        public void speak(){
            System.out.println("我是一个好人");
        }
    
        public void cal01(){
            int res = 0;
            for (int i = 0; i < 1000; i++) {
                res += i;
            }
            System.out.println("cal01方法 计算结果=" + res);
        }
    
        public void cal02(int n){
            int res = 0;
            for (int i = 0; i <= n; i++) {
                res += i;
            }
            System.out.println("cal02方法 计算结果=" + res);
        }
    
        public int getSum(int num1 , int num2){
            int res = num1 + num2;
            return res;
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    调用类

    /**
     * ClassName: Method01
     * date: 2022/9/2 15:09
     *
     * @author DingJiaxiong
     */
    
    public class Method01 {
        public static void main(String[] args) {
            Person p1 = new Person();
            p1.speak();
            p1.cal01();
            p1.cal02(5);
            p1.cal02(10);
    
            int returnRes = p1.getSum(10 ,20);
            System.out.println("getSum方法返回的值= " + returnRes);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    运行结果

    在这里插入图片描述

    7.2.3 方法的调用机制原理

    在这里插入图片描述

    7.2.4 为什么需要成员方法

    一个需求:遍历一个数组,输出数组的各个元素值

    /**
     * ClassName: MyTools
     * date: 2022/9/2 15:18
     *
     * @author DingJiaxiong
     */
    
    public class MyTools {
        public void printArr(int[][] map){
            System.out.println("========");
            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();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    调用类

    /**
     * ClassName: Method02
     * date: 2022/9/2 15:18
     *
     * @author DingJiaxiong
     */
    
    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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    运行结果

    在这里插入图片描述

    7.2.5 成员方法的好处
    • 提高代码的复用性
    • 可以将实现的细节封装起来,然后供其他用户来调用即可
    7.2.6 成员方法的定义
    访问修饰符 返回数据类型 方法名(形参列表...){
        //方法体
        语句;
        return 返回值;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 形参列表:表示成员方法输入 cal(int n) , getSum(int num1, int num2)
    • 返回数据类型:表示成员方法输出, void 表示没有返回值
    • 方法主体:表示为了实现某一功能代码块
    • return 语句不是必须的。
    7.2.7 注意事项和使用细节
    /**
     * ClassName: AA
     * date: 2022/9/2 15:25
     *
     * @author DingJiaxiong
     */
    
    class AA {
        //方法不能嵌套定义
    //    public void f4(){
    //        public void f5(){
    //
    //        }
    //    }
    
        public void f3(String str,int n){
    
        }
    
        //返回多个结果,用数组
        public int[] getSumAndSub(int n1,int n2){
            int[] resArr = new int[2];
            resArr[0] = n1 + n2;
            resArr[1] = n1 - n2;
            return resArr;
        }
    
        public double f1(){
            double d1 = 1.1 * 3;
            int n = 100;
            return n;
        }
    
        public void f2(){
            System.out.println("Hello1");
            System.out.println("Hello1");
            System.out.println("Hello1");
    
            int n = 10;
            return;
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    调用类

    /**
     * ClassName: MethodDetail
     * date: 2022/9/2 15:25
     *
     * @author DingJiaxiong
     */
    
    public class MethodDetail {
        public static void main(String[] args) {
            AA aa = new AA();
            int[] res = aa.getSumAndSub(1 , 4);
    
            System.out.println("和 = " + res[0]);
            System.out.println("差 = " + res[1]);
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    运行结果

    在这里插入图片描述

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

    如果不写默认访问,[有四种: public, protected, 默认, private]

    【返回数据类型】

    • 一个方法最多有一个返回值 [如何返回多个结果 → 返回数组 ]
    • 返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)
    • 如果方法要求有返回数据类型,则方法体中最后的执行语句必须为 return 值; 而且要求返回值类型必须和 return 的值类型一致或兼容
    • 如果方法是 void,则方法体中可以没有 return 语句,或者 只写 return ;

    【方法名】

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

    【形参列表】

    • 一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开,
    • 参数类型可以为任意类型,包含基本类型或引用类型。
    • 调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数
    • 方法定义时的参数称为形式参数,简称形参;方法调用时的传入参数称为实际参数,简称实参,实参和形参的类型要一致或兼容、个数、顺序必须一致

    【方法体】

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

    【方法调用细节说明】

    • 同一个类中的方法调用:直接调用即可。

    • 跨类中的方法A类调用B类方法:需要通过对象名调用。

      跨类的方法调用和方法的访问修饰符相关

    7.2.8 类定义的完善

    在这里插入图片描述

  • 相关阅读:
    OKR与个人成长:生活中的 OKR
    Cpp浅析系列-STL之queue
    matlab RBF语音识别
    【juc】future并行执行并获取返回值
    XPS测试仪器-科学指南针
    GAN-对抗生成网络
    23_ue4人物控制切换
    30岁被公司裁员,有人从此一蹶不振,而我逆风翻盘,重获新生~
    1python模块和库
    详谈判断点在多边形内的七种方法
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126845522