面向基础编程(二)成员方法

1.基本介绍

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

speak()为说话的成员方法

public void speak() {

System.out.println("我是一个好人");

}

  • public 表示方法是公开

  • void : 表示方法没有返回值

  • speak() : speak 是方法名, () 形参列表

  • {} 方法体,可以写我们要执行的代码

  • System.out.println("我是一个好人"); 表示我们的方法就是输出一句话

调用方法为Person p1 = new Peson();

p1.speak();

cal()为从1加到n的成员方法

public void cal(int n) {

//循环完成

int res = 0;

for(int i = 1; i <= n; i++) {

res += i;

}

System.out.println("cal 方法 计算结果=" + res);

}

  • (int n) 形参列表, 表示当前有一个形参 n, 可以接收用户输入

调用方法为 p1.cal(5); //给n赋值为5;

getSum()为两个数值相加的成员方法

public int getSum(int num1, int num2) {

int res = num1 + num2;

return res;

}

  • int :表示方法执行后,返回一个 int 值

  • (int num1, int num2) 形参列表,2 个形参,可以接收用户传入的两个数

  • return res; 表示把 res 的值, 返回

调用方法为 int returnRes = p1.getSum(5,8); //将5和8相加,将结果赋给returnRes;

2.方法的调用机制

以getSum()方法为例

当方法返回数据后,会销毁独立空间(栈空间)

3.成员方法的必要性

当需求需要多次调用时,传统方法可以解决但是代码冗余太高,使用成员方法调用可以提高代码复用性,供其余用户调用,减少代码冗余。

eg:输出数组

int map = {{0,0,1},{1,1,1},{1,1,3}};

使用传统方法

for(int i = 0; i < map.length; i++) {

for(int j = 0; j < map[i].length; j++) {

System.out.print(mapi + "\t");

}

System.out.println();

}

使用成员方法

MyTools tool = new MyTools(); //实例化对象

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(mapi + "_");

}

System.out.println();

}

}

}

4.成员方法的定义

访问修饰符 返回数据类型 方法名(形参列表..) {//方法体

语句;

return 返回值;

}

  • 形参列表:表示成员方法输入

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

  • 方法主体:表示为了实现某一功能代码块(语句)

  • return 有返回数据类型就要有返回内容(语句不是必须的)

5.注意事项
  • 访问修饰符 (作用是控制 方法使用的范围)

如果不写默认访问,[有四种: public, protected, 默认, private], 具体在后面说

  • 返回数据类型

  1. 一个方法最多有一个返回值(返回多个结果 返回数组 eg: int[])

public class mode5 {
    public static void main(String[] args){
        AA aa = new AA();
        int[] res = aa.getSunAndSub(4,2);
        System.out.println("和为" + res[0]);
        System.out.println("差为" + res[1]);
    }
}
​
class AA{
    public int[] getSunAndSub(int n1,int n2){
        int[] resArr = new int[2];
        resArr[0] = n1+n2;
        resArr[1] = n1-n2;
        return resArr;
    }
}

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

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

public int BB(){

}

上述代码将会报错,因为有返回数据类型,必须有返回值,

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

public void BB(){

return;

}

  • 方法名

遵循驼峰命名法,最好见名知义,表达出该功能的意思即可(方法名需要有一定的含义)

  • 形参列表

  1. 一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开;

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

  3. 调用带参数的方法,一定对应着参数列表传入的相同类型或兼容类型的参数;(兼容类型是可以进行自动转换的类型)

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

  • 方法体

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

  • 方法调用

  1. 同一类中的方法调用:直接调用

public class mode6 {
    public static void main(String[] args){
        A a = new A();
        a.say();
    }
}
​
class A{
    public void print(int n){
        System.out.println("调用了print()"+ n);
    }
​
    public  void say(){
        print(6);
    }
}

2.方法A类调用B类方法:需要通过对象名调用

public  void m1(){
    B b = new B();
    b.h1();
}
class B{
    public void h1(){
        System.out.println("调用h1");
    }
}

3.跨类的方法调用与方法的访问修饰符有关

6.成员方法的传参机制

基本数据类型,传递的是值,形参的改变不影响实参

引用数据类型(数组、对象),传递的是地址,可以通过形参改变实参

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值