วิธีเรียกใช้เมธอดเบื้องต้น (Method Calling)
class TAirPlane {
int color; // สี เป็น คุณสมบัติอีกแบบ
static void Fly() { }; // บิน เป็น พฤติกรรม หรือ กริยา ที่ object ทำได้
static void Land() { }; // ลงจอด เป็น อีกพฤติกรรมหนึ่ง
TAirPlane() {
System.out.println(“result of constructor”);
}
}
TAirPlane AirPlane1;
TAirPlane AirPlane2;
AirPlane1 = new AirPlane1(); // จองพื้นที่ในหน่วยความจำ จึงจะเริ่มเรียกใช้ได้
AirPlane1.Fly(); // สั่งให้ object AirPlane1 ทำกริยา บิน
AirPlane1.color = RED; // เปลี่ยน สี (คุณสมบัติ) ของเครื่องบิน ให้เป็นสีแดง
ตัวอย่าง 4.4 การจองพื้นที่ให้กับวัตถุและเรียกใช้ Constructor
class hello1 {
public static void main(String args[]) {
TAirPlane abc = new TAirPlane();
}
}
ตัวอย่าง 4.5 การประกาศตัวแปร และเข้าใช้ Heap กับ Stack Memeory แยกกัน
class hello2 {
public static void main(String args[]) {
TAirPlane abc;
abc = new TAirPlane();
}
}
ตัวอย่าง 4.6 เรียกใช้ Constructor แบบชั่วคราว ที่อ้างอิงมาใช้อีกไม่ได้
– คลาส TAirPlane ต้องอยู่ใน Directory เดียวกับ hello3 หรือ Package เดียวกัน
class hello3 {
public static void main(String args[]) {
new TAirPlane();
new TAirPlane();
}
}
ตัวอย่าง 4.7 เรียกใช้ Method แบบชั่วคราว ที่อ้างอิงมาใช้อีกไม่ได้
class hello4 {
public static void main(String args[]) {
new TAirPlane().Fly();
new TAirPlane().Land();
}
}
ตัวอย่าง 4.8 เรียกใช้ Method จากพื้นที่เดิมใน Heap Memory
– แบบนี้เรียกใช้ Constructor เพียงครั้งเดียว
class hello5 {
public static void main(String args[]) {
TAirPlane abc = new TAirPlane();
abc.Fly();
abc.Land();
}
}
ตัวอย่าง 4.9 การเรียกใช้ main ที่รับค่าผ่านอาร์เรย์เสมอ
class hello6 {
public static void main(String args[]) {
TAirPlane abc = new TAirPlane();
String a[] = {}; // new String[0];
abc.main(a);
}
}
ตัวอย่าง 4.10 การเรียกใช้ Method ในคลาสเดียวกัน แบบ static
– เพราะ main เป็น static ดังนั้น minihello ต้องเป็น static ด้วย
class hello7 {
public static void main(String args[]) {
minihello();
}
static void minihello() {
System.out.println(“result of mini hello”);
}
}
ตัวอย่าง 4.11 การเรียกใช้ Method ในคลาสเดียวกัน แบบไม่เป็น static
class hello8 {
public static void main(String args[]) {
hello8 x = new hello8();
x.minihello();
}
void minihello() {
System.out.println(“result of mini hello”);
}
}
ตัวอย่าง 4.12 การเรียกใช้ Method แบบรับ และคืนค่า แบบไม่เป็น static
class hello9 {
public static void main(String args[]) {
hello9 xx = new hello9();
System.out.println(xx.oho(4)); // 8
}
int oho(int x) { return (x * 2); }
}
ตัวอย่าง 4.13 การเรียกใช้ Method แบบรับ และคืนค่า แบบเป็น static
class hello10 {
public static void main(String args[]) {
System.out.println(oho(5));
}
static int oho(int x) {
x = x * 2;
return x;
}
}
ตัวอย่าง 4.14 การสืบทอดจากคลาสแม่
– จะไม่เรียก Constructor เพราะเป็นการสืบทอดโดยตรง
class Mother {
Mother() { System.out.println(5); }
static void m1() { System.out.println(6); }
}
class hello11 extends Mother {
public static void main(String args[]) {
m1(); // 6
}
}
ตัวอย่าง 4.15 การเรียกใช้ Constructor ภายในคลาส
– เรียกใช้ Constructor ก็จะเรียกใช้ Constructor ของคลาสแม่มาอัตโนมัติ
– โปรแกรมนี้จะเรียกใช้ Constructor ของ TAirPlane ผ่าน Constructor ของ hello12
class hello12 extends TAirPlane {
hello12() {
Fly();
Land();
}
public static void main(String args[]) {
new hello12();
}
}