การเขียนโปรแกรม java Objects
Objects
ทุกสิ่งในภาษา Java จะอยู่ใน Classes และ Objects
ใน class point มีการประกาศตัวแปร x , y เราสร้าง object ชื่อ p โดยต้องใช้คำสั่ง new
ในกรณีนี้เราประกาศโดยใช้ default constructor คือไม่มีการให้ค่าเริ่มต้น หรือเราสามารถ constructor เองได้ โดย
ตอนนี้เราสามารถกำหนดค่าเริ่มต้นให้กับ Object ได้แล้วเช่น
เราสามารถสร้างได้มากกว่า 1 constuctor ดังนั้น
ข้อสังเกตในการใช้
หลังจากเราประกาศ p แล้วสามารถเข้าถึงตัวแปรภายใน Object ได้เลย
class Point { int x; int y; }
ใน class point มีการประกาศตัวแปร x , y เราสร้าง object ชื่อ p โดยต้องใช้คำสั่ง new
Point p = new Point();
ในกรณีนี้เราประกาศโดยใช้ default constructor คือไม่มีการให้ค่าเริ่มต้น หรือเราสามารถ constructor เองได้ โดย
class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; }
ตอนนี้เราสามารถกำหนดค่าเริ่มต้นให้กับ Object ได้แล้วเช่น
new Point(4, 1)
.เราสามารถสร้างได้มากกว่า 1 constuctor ดังนั้น
Point
สามารถสร้างได้หลายแบบ ลองสร้างอีกครั้งclass Point { int x; int y; Point() { this(0, 0); } Point(int x, int y) { this.x = x; this.y = y; }
ข้อสังเกตในการใช้
this
นี้ เราสามารถใช้มันใน constuctor ในการเรียก constuctor อื่น ใน class ของเราเองหลังจากเราประกาศ p แล้วสามารถเข้าถึงตัวแปรภายใน Object ได้เลย
p.x = 3; p.y = 6;
Methods
เราสามารถประกาศ method ของ point ได้แล้ว
class Point { ... // code ของเราก่อนหน้านี้ void printPoint() { System.out.println("(" + x + "," + y + ")"); } Point center(Point other) { // เราคืนค่าจุดศูนย์กลางของจุดนี้และจุดอื่น return new Point((x + other.x) / 2, (y + other.y) / 2); }
Public and Private
เมื่อเราใช้
private
ก่อนตัวแปรหรือ method ในคลาสนั้น นั่นหมายถึงคลาสอื่นจะไม่สามารถใช้ตัวแปรนี้ได้ และเมื่อเราใช้ public
หมายถึงคลาสไหนก็มาใช้ได้ ปกติเราจะเห็น Constuctor ใช้ public
แบบฝึกหัด
สร้าง method ใหม่ชื่อ
scale
, จะสร้างจุดที่ใกล้จุด (0,0) ที่สุด โดยลดค่าที่ละครึ่งเช่น (8 , 4) หลังจากนั้นจะเป็น (4 , 2) , (1, 1)class Point private double x; private double y; public Point(double x, double y) { this.x = x; this.y = y; } public void print() { System.out.println("(" + x + "," + y + ")"); } // สร้างตรงนี้ } public class Main { public static void main(String[] args) { Point p = new Point(32, 32); for (int i = 0; i < 5; i++) { p.scale(); p.print(); } } }
class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public void print() {
System.out.println("(" + x + "," + y + ")");
}
public void scale(){
x = x/2;
y = y/2;
}
}
public class Main {
public static void main(String[] args) {
Point p = new Point(32, 32);
for (int i = 0; i < 5; i++) {
p.scale();
p.print();
}
}
}