java中的类与对象(2)

成员函数

          Java中编写在类中的函数,一般称为成员函数。

    成员函数的一般格式如下(参数可以有也可以没有):

    返回类型 函数名称 (类型1 参数1,类型2 参数2,......){

        函数内容

    }//普通的成员函数可以直接使用同一个类中的成员变量,不用加变量名。

    注:调用函数时,程序会跳转到该函数内部执行,执行完毕后回到原函数继续执行后面的代码,可以通过“对象名.函数名(参数值列表)”调用函数。

关于参数

    1、形参(形式参数):是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数.在调用函数时,实参将赋值给形参。如:void init(String n;int a);定义了函数init,传入两个参数,这些参数只能在函数内部使用,属于局部变量,其中的“n”“a”叫做形参。

    2、实参(实际参数):实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。如:zhangsan.init("zhangsan","19");调用了此成员函数,传入两个值给“n”“a”,“zhangsan”“19”叫做实参。

    3、参数传递值传递:主调函数向调用函数传递参数实际上只是将实参的拷贝(即临时副本)传递给了被调用函数,并不是实参本身,这样被调函数不能直接修改主调函数中变量的值,而只能修改其私有的临时副本的值。

    4、参数传递之引用传递:对引用的操作等于对其指定的对象进行操作,当将实参传递给形参时,形参就指向了实参。简单理解就是传了地址值。

举例说明

 1 class Number{
 2      int a;
 3 }
 4 class Add1{
 5      void fun (Number num){//传递引用类型参数,传地址,引用传递
 6            num.a = num.a + 1;
 7      }
 8 }
 9 public class Test1{
10       public static void main(String[] args){
11             Number num = new Number();
12             num.a = 10;
13             Add1 c = new Add1();
14             c.fun(num);
15             System.out.println("num.a=" + num.a);
16       }
17 }

输出结果为:num.a=11;为引用传递

class Add2 { 
      void fun(int a){//传递基本类型参数,值传递
            a = a+1;
      }
}
public class ObjectTest6 { 
      public static void main(String[] args) {
            int a = 10;
            Add2 c = new Add2();
            c.fun(a);
            System.out.println("a=" + a);
      }
}

输出为:a=10;为值传递

关于返回类型

    1、“int abs(int a)”定义了函数 abs,返回一个整数类型的值。

    2、“int result = c.abs(-10);”表示调用该函数,将返回值存入 result 变量。

    3、如果函数中,中途遇到了 return,函数中途跳出。

    4、没有返回类型的函数,也可以 return,表示跳出该函数。但是,不能return一个具体的值。

函数重载

    也叫做静态多态,说白了就是用一个函数名做不同的事,以下条件必须满足一个才可以重载。

    先定义一个函数作为例子 int adx(int a,double b){功能1}

    1、函数参数个数不同。int adx(int a){功能2}

    2、函数参数个数相同,类型不同。double adx(int a,double b){功能3}

    3、函数参数个数相同,类型相同,但是在参数列表中的出现顺序不同。int adx(double b,int a){功能4}

构造函数

    构造函数可以完成对象初始化的任务,构造函数的名称与类名相同且不含返回类型。定义了构造函数之后,在实例化对象时,就必须传入相应的参数列表,否则报错,使用方法是:

     类名 对象名 = new 类名(传给构造函数的参数列表);

注:1、当一个类的对象创建时,构造函数就会被自动调用,可以在这个函数中加入初始化工作的代码。在对象的生命周期中,构造函数只会调用一次

    2、构造函数可以被重载,也就是说,一个类中可以定义多个构造函数。实例化对象时,系统根据参数的不同,调用不同的构造函数。

    3、在一个类中,如果没有定义构造函数,系统会自动为这个类产生一个默认的构造函数,该函数没有参数,也不做任何事情。

举例说明

class Student{
     String name;
     String sex;
     int age;
     Student(String name,String sex,int age){//第一个构造函数
            this.name = name;
            this.sex = sex;
            this.age = age;
     }
     Student(String name,int age){//重载的构造函数
            this.name = name;
            this.sex = "不明";
            this.age = age;
     }
     void display(){
     System.out.println("name=" + name);
     System.out.println("sex=" + sex);
     System.out.println("age=" + age);
     }
}
public class Test2 { 
      public static void main(String[] args) {
            Student zhangsan = new Student("张三", "男", 19);//根据参数选用第一个
            zhangsan.display();
            Student lisi = new Student("李四",20);//根据参数选择第二个
            lisi.display();
      }
}

输出结果为:

name=张三
sex=男
age=19
name=李四
sex=不明
age=20

  

原文地址:https://www.cnblogs.com/541wsy/p/12487991.html