回顧方法及加深之靜態和非靜態方法的呼叫(02)
阿新 • • 發佈:2022-03-22
21.回顧方法及加深----(靜態和非靜態方法)呼叫總結
1. 不同類之間的方法呼叫
建立兩個類 Demo02 Student
//類:學生類 public class Student { //學生類下面的方法:此方法為靜態方法,因為加了static public static void say(){//為啥不寫引數啊!?? System.out.println("學生說話了"); } //上面沒寫形參,下面寫了形參 ,注意呼叫的區別 public static void say1(String a){//為啥寫引數啊 System.out.println("學生又說話了"); } //學生類下面的方法:此方法為非靜態方法,因為沒有加static public void sleep(){ System.out.println("學生睡覺了"); } }
public class Demo02 { public static void main(String[] args){ System.out.println("Hello World !"); //***************** 靜態方法的呼叫 **************************** //靜態方法 加了static //呼叫法一:類名.方法名()呼叫 Student.say(); Student.say1("啊哈哈哈");//因為say1()方法裡寫了String形參,所以此處要給形參傳遞值 //***************** 非靜態方法的呼叫 **************************** //非靜態方法 沒有加static //呼叫不能直接通過類名.方法名呼叫 //法:第一:例項化這個類 new new Student();//new Student()就代表把這個類例項化了 new Student().sleep();//例項化之後就能 .sleep() 呼叫了 //法二:但是通常寫成下面的方式 //萬能公式:變數型別 變數名 = 變數的值; //物件型別 物件名 = 物件的值; Student student = new Student(); //也是把物件值變為例項化物件的過程 //然後呼叫 物件名.方法名(); student.sleep(); /** (適用非靜態的方法) * 理解:new Student() :把Student類 例項化了 * Student student = new Student(); 例項化之後,又賦值給了student這個物件 * 用student這個物件:所以student這個物件 可以通過 物件名.方法名()呼叫 。即: student.sleep(); * */ } }
2. 同一個類下的方法呼叫
建立一個類,比如Demo03
public class Demo03 { public static void main(String[] args){ System.out.println("Hello World !"); } //定義兩個普通靜態方法a,b //此時兩靜態方法c和d可以互相直接呼叫,也能被main方法直接呼叫 public static void a(){ b(); } public static void b(){ a(); } //定義兩個普通非靜態方法c,d //此時兩非靜態方法a和b可以互相直接呼叫,但不能被main方法直接呼叫 public void c(){ d(); } public void d(){ c(); } //定義一個靜態方法e,一個非靜態方法f //此時靜態方法e不能直接呼叫非靜態方法f ,但是非靜態方法f可以直接呼叫靜態方法e public static void e(){ //f();不能直接呼叫 //類例項化之後才能呼叫 new Demo02 demo02 = new Demo02(); demo02.f(); } public void f(){ e(); } /** static 是和類一起載入的(時間片很早:當類存在的適合,它就存在了) 沒有static的非靜態方法f 是在類例項化之後才存在(是跟物件有關的,物件建立之後才存在) 所以已經存在了的e()方法 直接呼叫一個不存在的f()方法 會報錯。 * 因為被static修飾的內容會跟隨類的載入而載入,所以靜態化內容可以不用例項化就能被直接呼叫 * 同時兩靜態方法之間也可以互相直接呼叫 * */ /** * 因為被static修飾的內容會跟隨類的載入而載入,所以靜態化內容可以不用例項化就能被直接呼叫 * 同時兩靜態方法之間也可以互相直接呼叫 * */ /** *靜態方法只能直接呼叫靜態方法(言外之意 靜態方法可以間接呼叫非靜態方法。如例項化),非靜態方法可以呼叫靜態方法 */ }