1. 程式人生 > 實用技巧 >面向物件03:回顧方法的呼叫

面向物件03:回顧方法的呼叫

類名.方法名

方法的呼叫:例如遞迴:
  • 靜態方法
  • 非靜態方法
靜態方法呼叫:
//靜態方法呼叫
// Demo02類 中 呼叫 Student類 中 say()方法

// com.oop.Demo01 的Demo02類
package com.oop.Demo01;

public class Demo02 {
    public static void main(String[] args) {
Student.say();  //類名.方法名。呼叫別的類
    }
}


//com.oop.Demo01 的Student類
package com.oop.Demo01;

public class Student {

        //靜態方法
        public static  void say(){
            System.out.println("學生說話了");

        }
}

輸出:

學生說話了

程序已結束,退出程式碼 0
非靜態方法呼叫:
// 非靜態方法呼叫
// Demo02類 中 呼叫 Student類 中 say()方法

package com.oop.Demo01;

public class Demo02 {
    public static void main(String[] args) {
     //   Student.say();  //類名.方法名。呼叫別的類
        Student student = new Student();
        student.say();
    }
}


// com.oop.Demo01 的Student類
package com.oop.Demo01;

public class Student {

        //非靜態方法
        public  void say(){
            System.out.println("學生說話了");

        }
}


靜態方法呼叫和非靜態方法呼叫的區別:

1.在靜態呼叫中,被呼叫的類 在方法名中有 static ,呼叫類(demo02),直接呼叫
2.在非靜態呼叫中,被呼叫的類 在方法名中沒有 static,呼叫類(demo02)需要new 一個類名,再呼叫。

方法之間呼叫需要注意的一些東西:

把static去掉之後,兩個方法可以互相呼叫。原因是有 static 存在的早,和類一起載入。沒有static存在 相對有static晚。存在時間早的晚的,存在時間不一樣的之間不能互相呼叫。 如互相呼叫需都有static,都沒有static。

形參和實參
package com.oop.Demo01;

public class Demo03 {   //建立一個類叫demo03
    public static void main(String[] args) {
        //實際引數和形式引數的型別要對應!
//        System.out.println(add(1,2));
        int add = new Demo03().add(1,2);
        System.out.println(add);
    }

    public static int add(int a,int b) {
        return a+b;
    }
}

輸出:

3

程序已結束,退出程式碼 0

實際引數和形式引數的型別要對應!

值傳遞:
package com.oop.Demo01;

public class Demo04 {
    public static void main(String[] args) {
        //值傳遞
        int a = 2;

        System.out.println(a);

        System.out.println("============");

        Demo04.change(a);   //把a的值帶進change方法中
        System.out.println(a);//1

    }

    //返回值為空
    public static void change(int a) {
        a = 10;
    }
}

輸出:

2
============
2

程序已結束,退出程式碼 0
引用傳遞:
package com.oop.Demo01;

public class Demo05 {
    //引用傳遞  物件,本質還是值傳遞
    //物件,記憶體
    public static void main(String[] args) {
        Person person = new Person();  //給Person方法個名字叫person

        System.out.println(person.name); //null

        Demo05.change(person);
        System.out.println(person.name);  //阿薩大
    }

    public static void change(Person person) {  //change方法用的Person方法中的person
        
        //person 是一個物件:指向的----->Person person = new Person();這是一個具體的人,可以改變屬性!
        person.name = "阿薩大";
    }

    static class Person {
        String name; //null
    }
}


輸出:

null
阿薩大

程序已結束,退出程式碼 0