一般的,在Java語言中,調用方法有三種方式。
第一種:通過對象名.方法名進行調用,這是最普通的也是最常見的一種調用方式。
第二種:通過new關鍵字調用構造方法,這種是在執行個體化對象時使用的方式。
第三種:通過類名.方法名調用,當需要調用的那個方法為靜态(有static的)方法時使用。
一、靜态方法調用其他方法:
1. 靜态方法調用非靜态方法
無論是否在同一類内,均需要通過對象調用。
//Test類
package main;
public class Test {
public void IsSon1(){//非靜态方法
System.out.println("java大爺,你成功調用了你非靜态方法裡的兒子1");
}
public static void main(String[] args) {
Test son1=new Test();//首先要定義一個變量
son1.IsSon1();//靜态方法通過對象調用此類中的非靜态方法
Son son=new Son();//靜态方法通過對象調用Son類中的非靜态方法
son.IsSon();//調用 Son類中的IsSon方法
}
}
//Son類
package main;
public class Son {
public void IsSon(){
System.out.println("java大爺,你成功的調用了你另一個類裡的兒子");
}//Son類裡的非靜态方法
}
運作結果:
2.靜态方法調用靜态方法
同一類内直接調用,不同類内直接通過類名.方法名(參數表)調用
package main;
public class Test {
public static void IsSon2(){//靜态方法
System.out.println("java大爺,你成功調用了你靜态方法裡的兒子2");
}
public static void main(String[] args) {
IsSon2();//靜态方法直接調用類内的靜态方法
Son.IsSon3();//靜态方法通過類名直接調用Son類中的靜态方法
}
}
package main;
public class Son {
public static void IsSon3(){
System.out.println("java大爺,你成功的調用了你另一個類裡的靜态兒子3");
}//Son類裡的靜态方法
}
運作結果:
二、非靜态方法調用其他方法
1.非靜态方法在同一類内調用其他方法
在同一類内,非靜态方法可以直接調用靜态方法和非靜态方法
package main;
public class Test {
public void Son1(){//非靜态方法
System.out.println("java大爺,你成功調用了你非靜态方法裡的兒子1");
}
public static void Son2(){//靜态方法
System.out.println("java大爺,你成功調用了你靜态方法裡的兒子2");
}
public void alloutput(){
Son1();//非靜态方法直接調用類内的非靜态方法△
Son2();//非靜态方法直接調用類内的靜态方法△
}
public static void main(String[] args) {
Test test = new Test();
test.alloutput();//前邊已學靜态方法通過對象調用非靜态方法
}
}
運作結果:
2.非靜态方法在不同類之間調用其他方法
在不同類之間,非靜态方法需要通過對象才能調用非靜态方法。
非靜态方法既可以通過對象調用靜态方法又可以通過類名直接調用(由于對象的調用方式屬于非靜态調用方式,是以建議使用類名直接調用靜态方法)
package main;
public class Test {
public void output(){
Son.IsSon1();//通過類名直接調用Son類中的靜态方法,不建議使用對象調用靜态方法
Son son = new Son();
son.IsSon2();//通過對象調用Son類中的非靜态方法
}
public static void main(String[] args) {
//同一類中的靜态方法調用非靜态方法output,前邊已經涉及到
Test test = new Test();
test.output();
}
}
package main;
public class Son {
public static void IsSon1(){//Son類裡的靜态方法
System.out.println("java大爺,你成功的調用了你另一個類裡的靜态兒子1");
}
public void IsSon2(){//Son類裡的非靜态方法
System.out.println("java大爺,你成功的調用了你另一個類裡的非靜态兒子2");
}
}
原文連結:https://blog.csdn.net/plus_left/article/details/83663041