面向物件03:回顧方法的呼叫
阿新 • • 發佈:2020-08-07
類名.方法名
方法的呼叫:例如遞迴:
- 靜態方法
- 非靜態方法
靜態方法呼叫:
//靜態方法呼叫 // 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