สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

ฟรี TUTORIAL JAVA

ฟรีtutorial JAVA 01 install Eclipse ฟรีtutorial JAVA 02 intro to programming Eclipse ฟรีtutorial JAVA 03 condiotion ฟรีtutorial JAVA 04.loop ฟรีtutorial JAVA 05.array ฟรีtutorial JAVA 05 2 array cont ฟรีtutorial JAVA 06 01 function ฟรีtutorial JAVA 06 02 function cont ฟรีtutorial JAVA 07 object ฟรีtutorial JAVA 08 string ฟรีtutorial JAVA 09 constructor ฟรีtutorial JAVA 10 01 oop ฟรีtutorial JAVA 10 02 oop2 ฟรีtutorial JAVA 11 exception ฟรีtutorial JAVA 12 reading file ฟรีtutorial JAVA 13 thread ฟรีtutorial JAVA 14 generic ฟรีtutorial JAVA 15 01 GUI ฟรีtutorial JAVA 15 02 GUI2 ฟรีtutorial JAVA 15 03.GUI3 ฟรีtutorial JAVA 16 using WindowBuilder ฟรีtutorial JAVA 17 event ฟรีtutorial JAVA 18 database management system ฟรีtutorial JAVA 19 ER diagram ฟรีtutorial JAVA 20 Relational ฟรีtutorial JAVA 21 Xampp ฟรีtutorial JAVA 22 JDBC ฟรีtutorial JAVA 23 MVC ฟรีtutorial JAVA 24 SQL ฟรีtutorial JAVA
ขอย้ำอีกครั้งว่าเนื้อหาที่เห็นอยู่นี้ไม่ใช่เนื้อหาตามปกติที่เราสอนในห้องเรียนเป็นแค่ tutorial ไว้อ่านประกอบเฉยๆ แทบไม่เกี่ยวกันเลย และไม่เกี่ยวกับการบ้านที่ทำครับ ในห้องเรียนเนื้อหาจะเยอะกว่านี้ค่อนข้างมากครับ
ขอบคุณน้องตี้ อย่างสูงสำหรับ Tutorial ดีๆ

ฟรี TUTORIAL DATA STRUCTURE

DATA STRUCTURE

ฟรีtutorial : DATA STRUCTURE : 01 1การเรียงลำดับ(Sorting) ฟรีtutorial : DATA STRUCTURE : 01 2 การเรียงลำดับ2 ฟรีtutorial : DATA STRUCTURE : 02 อาร์เรย์ลิสต์ (Array List) ฟรีtutorial : DATA STRUCTURE : 03 ลิงค์ลิสต์ (Linked List) ฟรีtutorial : DATA STRUCTURE : 04 สแต๊ค ฟรีtutorial : DATA STRUCTURE : 05 1 คิวและไพออริตี้คิว ฟรีtutorial : DATA STRUCTURE : 05 2 คิวและไพออริตี้คิว ฟรีtutorial : DATA STRUCTURE : 06 1 ไบนารีทรี ฟรีtutorial : DATA STRUCTURE : 06 2 ไบนารีเสิร์ชทรี ฟรีtutorial : DATA STRUCTURE : 06 3 ไบนารีเสิร์ชทรี ฟรีtutorial : DATA STRUCTURE : 08 แฮช ฟรีtutorial : DATA STRUCTURE : 09 กราฟ ฟรีtutorial : DATA STRUCTURE :
ขอย้ำอีกครั้งว่าเนื้อหาที่เห็นอยู่นี้ไม่ใช่เนื้อหาตามปกติที่เราสอนในห้องเรียนเป็นแค่ tutorial ไว้อ่านประกอบเฉยๆ แทบไม่เกี่ยวกันเลย และไม่เกี่ยวกับการบ้านที่ทำครับ ในห้องเรียนเนื้อหาจะเยอะกว่านี้ค่อนข้างมากครับ
ขอบคุณน้องตี้ อย่างสูงสำหรับ Tutorial ดีๆ

คอนสตรัคเตอร์(Constructor)

            คอนสตรัคเตอร์ คือ สิ่งที่มีไว้สำหรับกำหนดค่าเริ่มต้นให้กับตัวแปรคลาสของอ็อปเจ็ค คอนสตรัคเตอร์จะทำงานอัตโนมัติเมื่อมีการ new อ็อปเจ็คขึ้นมา ระบบจะทำการจองพื้นที่ในหน่วยความจำสำหรัวแปรอ็อปเจ็คแล้วตามด้วยคอนสตรัคเตอร์

การเขียน คอนสตรัคเตอร์

-          หัวของคอนสตรัคเตอร์ต้องชื่อเหมือนคลาสนั้นๆ วิธีการเรียกใช้ก็คือ new Student(…)เช่น

public class Student

{

            public double weight;

                        public Student()

{

                                    Weight = 55.75;

}

}

-          คอนสตรัคเตอร์ต้องไม่มีประเภทของผลลัพธ์ที่จะคืนค่าออกไป และก็ไม่ต้องมีคำว่า void ด้วย เพราะมันจะทำให้กลายเป็นเมท็อด

-          ไม่มีคำว่า static

 

 


รูป9-1

            สร้างคลาส Box ขึ้นมา และสร้างคอนสตรัคเตอร์ public Box() ในบรรทัดที่ 8 ภายในคอนสตรัคเตอร์ก็สามารถตั้งค่าให้กับตัวแปรได้เลย

 


รูป 9-2

บรรทัดที่ 6-7 : สร้างอ็อปเจ็คขึ้นมา ตรงBox() จะถือว่าเป็นการเรียกเรียกคอนสตรัคเตอร์ของ Box ค่าต่างๆใน

คอนสตรัคเตอร์ก็จะมาอยู่ที่ตัวอ็อปเจ็คเลย

บรรทัดที่ 9-10 : ให้แสดงค่าออกทางหน้าจอโดยจะเห็นว่าตรง +box1.volume() ไม่ต้องให้ค่าอะไรลงไปอีก

เพราะ .volume จะเอาค่าของ box1 มาใช้ และ box1 ก็ได้ค่ามาจากคอนสตรัคเตอร์อีกที

ผลลัพธ์

            box1 และ box2 เรียกคอนสตรัคเตอร์ Box() เหมือนกัน ดังนั้นผลลัพธ์ที่ได้จากการคำนวณย่อมต้องเหมือนกัน

 


รูป 9-3

คอนสตรัคเตอร์ที่รับพารามิเตอร์(Parameterized constructors)

            จากตัวอย่างข้างบนจะเห็นว่าหากมีการ new Box() ขึ้นมาค่าต่างๆจะเหมือนกันทำให้การใช้งานยังไม่ดีเท่าที่ควร constructor ควรจะกำหนดค่าได้ดังนั้นก็ใช้วิธีแบบเมท็อดมาช่วยคือให้คอนสตรัคเตอร์รับพารามิเตอร์ โดยการรับพารามิเตอร์จะเป็นเกณฑ์แบบเดียวกันกับฟังก์ชัน[1] เรียกว่า overloaded constructor

ตัวอย่างของ overloaded constructor คือมีคอนสตรัคเตอร์ที่ต้องชื่อเหมือนกันแต่รับพารามิเตอร์ต่างๆกันเวลาที่จะเรียกใช้เมื่อ new ขึ้นมา ใน() ก็ให้ใส่ค่าลงไปตามที่พารามิเตอร์ต้องการ

                public class Student

{

                        public Student( ) {}

public Student(int id) {}

public Student(double weight, double height) {}

public Student(int id, double weight, double height ) {}

}

 

 


รูป9-4

ในคลาส Box เหมือนเดิม แต่เปลี่ยนคอนสตรัคเตอร์ใหม่ให้คอนสตรัคเตอร์รับพารามิเตอร์เป็น double 3 ตัวจากนั้นเอาค่าจากพารามิเตอร์ที่รับเข้ามาไปเก็บไว้ในตัวแปรคลาส

 



รูป9-5

            จะเห็นได้ว่า หากให้คอนสตรัคเตอร์รับพารามิเตอร์ แต่เมื่อ new ขึ้นมาแล้วไม่ใส่พารามิเตอร์ลงไปจะเกิด error แบบบรรทัดที่ 6-7 วิธีแก้ error ก็ใส่พารามิเตอร์ให้ถูกต้อง

 

 


รูป9-6

            หลังจากใส่พารามิเตอร์ลงไปแล้ว error ก็จะหายไป พารามิเตอร์ที่ใส่ไปตรงนี้จะถูกนำไปเป็นค่าตั้งต้นในคอนสตรัคเตอร์

ผลลัพธ์

            จะเห็นได้ว่าหากใช้คอนสตรัคเตอร์ที่รับพารามิเตอร์ เมื่อเรา new และใส่พารามิเตอร์ลงไป ค่าในคอนสตรัคเตอร์ของอ็อปเจ็คที่ไป new มาก็มีค่าต่างกัน ผลลัพธ์ที่ได้ก็จะมีค่าต่างกันไปด้วย

 

 


รูป9-7

Default constructor

            คือสิ่งคอมไพล์เลอร์สร้างขึ้นอัตโนมัติเพื่อกำหนดค่าให้กับตัวแปรเป็น 0 สำหรับ int และ 0.0 สำหรับ double รวมถึง false สำหรับ Boolean ใช่ในกรณีที่เราไม่ได้กำหนดค่าเริ่มต้นให้กับตัวแปร

            ภายใน default constructor จะไม่มีคำสั่งใดๆ

            class Student( ) { }

อธิบายเพิ่มเติม

            ก่อนหน้านี้สิ่งที่เขียนบ่อยก็คือ คลาส Scanner ที่ใช้สำหรับรับข้อมูลเข้ามาจากแป้นพิมพ์ เวลาที่เราใช้คำสั่ง new Scanner(…) เช่น new Scanner(System.in) ก็จะเป็นการส่งค่าพาราเตอร์ที่รับเข้าจากแป้นพิมพ์(System.in) ไปให้คอนสตรัคเตอร์ของ Scanner

            new Scanner(new File(“c:/file.txt”)) แบบนี้ก็จะเป็นการสร้างอ็อปเจ็ค 2 ตัวคือ จากการ new File ทำหน้าไปเอาสตริงจาก file มาเก็บเป็นอ็อปเจ็ค แล้วส่งอ็อปเจ็คตัวนี้ไปเป็นพารามิเตอร์ของอ็อปเจ็ค Scannerอีกที ก็จะทำให้ Scanner อ่านไฟล์ได้

คีย์เวิร์ด this กับ super

            คีย์เวิร์ด this ทำหน้าที่อยู่ 2 อย่าง

1.คือเวลาที่เราตั้งชื่อตัวแปรในพารามิเตอร์เป็นตัวเดียวกับตัวแปรคลาส ซึ่งปกติการตั้งชื่อตัวแปรซ้ำกันจะทำไม่ได้ แต่ในกรณีนี้ได้โดยการใช้คีย์เวิร์ด thisเข้ามาช่วย

 


รูป9-8

            2.ใช้เวลาที่จะเรียกใช้คอนสตรัคเตอร์ที่อยู่ในคลาสเดียวกัน

            คีย์เวิร์ด super ใช้เมื่อต้องการเรียกให้คอนสตรัคเตอร์ของคลาสแม่ทำงาน     

 


รูป9-9

            สร้างคลาสชื่อ Calculator

บรรทัดที่ 14 : ให้คอนสตรัคเตอร์ของคลาส Calculator รับพารามิเตอร์เป็น int 2ตัว แต่ตัวแปรในพารามิเตอร์

กับตัวแปรคลาสเหมือนกัน ดังนั้นในคอนสตรัคเตอร์ก็เขียน this ลงไปด้วย(จริงๆคือถ้าไม่อย่างเขียน this ก็ตั้งตัวแปรตรงพารามิเตอร์เป็นชื่อคล้ายๆกันก็ได้ เช่น ตัวแปรคลาสชื่อ x กลัวลืมว่าจะต้องเอาค่าไปใส่ตัวแปรชื่อ xในพารามิเตอร์ก็ตั้งเป็น xx พอชื่อไม่เหมือนกันก็ไม่ต้องใส่ this)

บรรทัดที่ 6 : ต้องการตั้งค่าให้ x,y ก็สามารถเรียกใช้คอนสตรัคเตอร์ที่มีอยู่ปล้วในคลาสเดียวกันได้ด้วยคีย์เวิร์ด

this(..);

 


รูป9-10

            สร้างอีกคลาสโดยให้คลาสนี้รับคุณสมบัติมาจากคลาสCalculator โดยใช้คีย์เวิร์ด extends ในคอนสตรัคเตอร์ของ Calculator2 ให้เรียกคอนสตรัคเตอร์ของ Calculator ได้โดยใช้ super();

 


รูป9-11

เมื่อมาถึงเมท็อด main ให้เรียกแค่อ็อปเจ็คCalculator2 ก็จะได้ของจากทั้ง Calculator และ Calculator2

 

 



[1] อ่านเรื่องฟังก์ชัน

 



แผนผังการเรียนเขียนโปรแกรม