zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    eclipse安装遇到无法安装的问题
    zip版本的jdk遇到的问题
    linux命令总结
    矢量图形语言
    牛客网答题知识记录
    eclipse里快捷键open type
    ubuntu进入与退出命令行模式
    查看电脑路由表
    strtus2.5报错显示:java.lang.ClassCastException:StrutsPrepareAndExecuteFilter cannot be cast to javax.servlet.Servlet
    Dockerfile总结-2
  • 原文地址:https://www.cnblogs.com/541wsy/p/12487991.html
Copyright © 2011-2022 走看看