首页 > 技术文章 > 面向对象(3):参数问题(方法上的形参是引用/基本数据类型)

saowei 2021-12-04 21:37 原文

参数问题(方法上的形参是引用/基本数据类型)

1、当方法上的形参是引用数据类型(类)

类是一个引用数据类型,可以当作形参的数据类型;
当今后看到一个方法上的形参是一个引用数据类型的时候
实际上它需要的是一个对应类的对象的地址值
定义一个动物叫的方法

//先定义一个动物类
class Animal {
//再定义一个叫的方法
    public void shout(){
        System.out.println("叫一叫");
    }
}
=====================================
//再定义一个类(并不是测试类)
class Demo1{
    //在该类中的参数是Animal a
    public void fun1(Animal a){
        a.shout();
    }
}
======================================
//再定义一个测试类,想要调用fun1方法
class Test {
    public static void main(String[] args) {
        //创建Demo1对象,来调用fun1这个方法
        Demo1 x = new Demo1();

        //创建Animal对象
        Animal y = new Animal();
        x.fun1(y);
    }
}

执行结果如下:
        叫一叫

        Process finished with exit code 0

========================================
/*
在测试类中调取fun1这个方法,需要传入参数y
但是这个参数y是一个类:Animal
实际上它需要的是一个对应类的对象的地址值
所以在x.fun1(y);之前要创建一个Animal对象,才能得到地址值
所以第一个y就代表着new Animal,将new Animal传入给x.fun1(y)的y
然后x.fun1(y)的y传入到fun1方法里去了
就代表Animal a = y = new Animal
 */
总结:测试类调用fun1,实际上调用的就是Animal类中的shout方法

当看到一个类中的方法,其参数是一个引用数据类型,那么在测试类调用该方法的时候,

除了要创建该方法对应的对象外,还要在该方法前面创建一个引用数据类型对应的对象

2、当方法上的形参是基本数据类型

当方法的参数是基本类型的时候,
调用该方法的时候,传入的是该基本数据类型实际的值
//创建一个类,类中有求和的方法
//先创建一个类
class Demo2{
    //再创建求和的方法
    public void fun2(int m,int n){
        System.out.println(m+m);
    }
}

//创建一个测试类
class Test2{
    public static void main(String[] args) {
        //创建Demo2对象
        Demo2 xx = new Demo2();
        //调用Demo2中的fun2方法
        xx.fun2(10,20);//直接输入你想要的值
  /*或者
  		int i =10;
  		int j =20;
  		xx.fun2(i,j);
        */
    }
}

执行结果如下:
        20

        Process finished with exit code 0

推荐阅读