งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

1 05_3_Constructor. 2 Constructor Method เมธอดที่มีชื่อเดียวกับกับชื่อคลาส ในการเขียนโปรแกรมเมื่อมีการสร้างอ๊อปเจ็คขึ้นมา โปรแกรมจะมีการเรียกเมธอดที่มีชื่อเดียวกับชื่อ.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "1 05_3_Constructor. 2 Constructor Method เมธอดที่มีชื่อเดียวกับกับชื่อคลาส ในการเขียนโปรแกรมเมื่อมีการสร้างอ๊อปเจ็คขึ้นมา โปรแกรมจะมีการเรียกเมธอดที่มีชื่อเดียวกับชื่อ."— ใบสำเนางานนำเสนอ:

1 1 05_3_Constructor

2 2 Constructor Method เมธอดที่มีชื่อเดียวกับกับชื่อคลาส ในการเขียนโปรแกรมเมื่อมีการสร้างอ๊อปเจ็คขึ้นมา โปรแกรมจะมีการเรียกเมธอดที่มีชื่อเดียวกับชื่อ คลาสทันที ( ถ้ามีการสร้างเมธอดนี้ไว้ )

3 3 การสร้าง Constructor Method Constructor Method ต้องมีชื่อเดียวกับชื่อคลาส Modifier มีอยู่ 2 ค่า คือ public และ default เท่านั้น Constructors จะไม่มีการ return type แม้แต่ void ก็ห้ามใช้ Constructor ถ้าไม่มีพารามิเตอร์จะเรียกว่า default constructor ตัวอย่างเช่น class A{ // สร้าง class A() {} //constructor Method สังเกตว่าไม่มี return type }

4 4 Note : เมธอดใดที่มีชื่อเดียวกับชื่อคลาส เรียกว่า Constructor Method class A{ // สร้าง class A() {} //default constructor }

5 5 Overloaded Constructor Method ในคลาสหนึ่งๆ สามารถมี Constructor ได้มากกว่า 1 Constructor เมื่อใดที่มี Constructor มากกว่า 1 จะเรียกกว่า Overloaded Constructor Method สามารถส่ง parameter ได้หลายรูปแบบ

6 6 A.java 1. class A{ // สร้าง class 2. double num; 3. A() {} //default constructor 4. A(int x){ 5. num = x; 6. } 7. A(double y){ 8. num = y; 9. } 10. }

7 7 07 Static binding and dynamic binding

8 8 Static binding และ dynamic binding Binding หมายถึงการผูกโยง Static Binding การผูกชื่อจะเกิดขณะคอมไพล ใชกับชื่อตัว แปร หรือ instance การเรียกใช้ function แบบเดิมจะถูก จำกัดขอบเขตขณะ compile Dynamic Binding การผูกชื่อเกิดขึ้นขณะทํางาน (runtime) เป็นการเปลี่ยนแปลงรูปแบบตามสภาพของ object ที่ได้ถูก สร้างขึ้น เวลาที่ compiler จัดสรรหน่วยความจำให้กับตัว แปรในขณะที่โปรแกรมกำลังถูก execute (run อยู่ ) ไม่ใช่ ในขณะที่กำลัง compile โปรแกรม ไม่สามารถเปลี่ยนแปลงหรือแก้ไขข้อมูล เกี่ยวกับตัวแปร หรือเมธอดได้หลังจาก คอมไพล์โปรแกรมแล้ว

9 9 07 Polymorphism by Inheritance

10 10 Polymorphism by Inheritance Methods หรือ Class ของวัตถุใดๆ จะถูกตรวจสอบเมื่อ run- time (Dynamic binding) จากรายละเอียดที่ได้กำหนดไว้ (Implementation) ของ Methods และ Class ใน Inheritance Hierarchies ในภาษาจาวา เมื่อมีการเรียกใช้ Method ใดๆ กับวัตถุหนึ่ง Java จะทำการค้นหารายละเอียดการกระทำ (Implementation) ของ Method ที่อยู่ภายในคลาส เดียวกัน ถ้าไม่พบจะทำการค้นหาจาก Superclass ทำเช่นนี้ ไปเรื่อยๆ ไล่ขึ้นไปตามลำดับขั้นของ class Hierarchies จนกระทั่งพบ

11 11 Polymorphism Polymorphism เป็นลักษณะการทำงานของเมธอดชนิดหนึ่ง ที่อาศัยการทำงานของ Inheritance และ Dynamic Binging คือเมธอดหนึ่งสามารถตอบสนองการทำงานได้ หลายรูปแบบขึ้นอยู่กับอ็อบเจ็คที่ส่งมา มีข้อกำหนดอยู่ว่า Parameter ของ Polymorphism จะต้อง อ้างอิงกับ superclass เสมอ การนำ Polymorphism มาใช้งานจะทำให้สามารถนำเมธอด หนึ่งไปใช้งานได้หลายหน้าที่โดยไม่จำเป็นต้องสร้างเมธอด ของแต่ละคลาสขึ้นมาใหม่

12 12 Polymorphism poly = many ( มีหลายอย่าง, หลายแบบ ), morphos = form ( รูปแบบ ), polymorphic จึงหมายถึงการมีมากกว่า 1 รูปแบบ หรือ many forms แนวความคิดของ polymorphism ก็คือการที่ object ที่เรียกใช้งาน method ของอีก object หนึ่ง ไม่จำเป็นต้องรู้ว่า object ที่รับ message นั้น เป็น object ของ class อะไร

13 13 ตัวอย่าง Polymorphism 1

14 14 Polymorphism by Inheritance Subtypes subclass เป็น specialization ของ superclass ทุก instance ของ subclass จัดเป็น instance ของ superclass สิ่งมีชีวิต งูคน สิ่งมีชีวิต คน งู

15 15 ตัวอย่าง Polymorphism 1 class สิ่งมีชีวิต { เคลื่อนที่ (); เคลื่อนที่ ( ความเร็ว ); // ในกรณีของ เคลื่อนที่ () กับ เคลื่อนที่ ( ความเร็ว ) ใน สิ่งมีชีวิต ถือเป็น overloading }

16 16 ตัวอย่าง Polymorphism 1 ( ต่อ ) class งู extends สิ่งมีชีวิต { เคลื่อนที่ () { " เลื้อย "; } เคลื่อนที่ ( ความเร็ว ) { " เลื้อย "; } } class คน extends สิ่งมีชีวิต { เคลื่อนที่ () { " เดิน "; } เคลื่อนที่ ( ความเร็ว ) { ถ้า ความเร็ว = เร็ว " วิ่ง " มิฉะนั้น เคลื่อนที่ (); } } // ในกรณีของการ implement เคลื่อนที่ () กับ เคลื่อนที่ ( ความเร็ว ) ใน งู กับ คน // ไม่เรียก overloading แต่จะเรียก overriding เนื่องจากเป็นการ re-implement superclass' methods

17 17 ตัวอย่าง Polymorphism 1 ( ต่อ ) // เวลาใช้ คน x = new คน (); x. เคลื่อนที่ (); x. เคลื่อนที่ ( เร็ว ); // แสดงถึง polymorphisms ที่ parameter ต่างกัน แต่ object คน x เหมือนกัน สิ่งมีชีวิต y = x; สิ่งมีชีวิต z = new งู (); y. เคลื่อนที่ (); z. เคลื่อนที่ (); // แสดงถึง polymorphisms ที่ object ต่างชนิดกัน คือ คน y กับ งู z ถึงแม้ว่าจะอยู่ในคราบสิ่งมีชีวิตเหมือนกันก็ตาม

18 18 ตัวอย่าง Polymorphism 2

19 19 ตัวอย่าง Polymorphism 2 class One { public void m() { System.out.println("One's implementation"); } one

20 20 class Two extends One class Two extends One { public void m() { System.out.println("Two's implementation"); } one Two

21 21 class Three extends Two 1. class Three extends Two { 2. public void m() { 3. System.out.println("Three's implementation"); 4. } 5. } one Two Three

22 22 class TestPoly 1. class TestPoly { 2. public static void main(String[] args) { 3. One one = new One(); 4. Two two = new Two(); 5. Three three = new Three(); 6. one.m(); // (1) 7. two.m(); // (2) 8. three.m(); // (3) 9. one = two; // (4) 10. one.m(); // (5) 11. two = three; // (6) 12. three.m(); // (7) 13. } 14. static void show(One a){ 15. a.m(); 16. } 17. }

23 23 หรือ ทำรูปแบบดังต่อไปนี้ 1. class TestPoly2 { 2. public static void main(String[] args) { 3. TestPoly2 myPoly = new TestPoly2(); 4. One one = new One(); 5. Two two = new Two(); 6. Three three = new Three(); 7. myPoly.show(one); // (1) 8. myPoly.show(two); // (2) 9. myPoly.show(three); // (3) 10. } 11. static void show(One a){ 12. a.m(); 13. } 14. }

24 24 ตัวอย่าง 3 Polymorphism 3

25 25 Polymorphism Shape SquareCircle name getName( ) calculateArea( ) side calculateArea( ) radius calculateArea( )

26 26 class Shape { private String name; public Shape(String aName) { // Overloaded Constructor Method name=aName; } public String getName( ) { return name; } public float calculateArea( ) { return 0.0f; } } // End Shape class a generic action Polymorphism

27 27 Understanding Polymorphism class Circle extends Shape { private float radius; public Circle(String aName){ super(aName); radius = 1.0f; } public Circle(String aName, float radius) { super(aName); this.radius = radius; } public float calculateArea() { return (float)3.14f*radius*radius; } } // End Circle class overloading overriding inheritance

28 28 Understanding Polymorphism class Square extends Shape { private float side; public Square(String aName) { super(aName); side = 1.0f; } public Square(String aName, float side) { super(aName); this.side = side; } public float calculateArea() { return (float) side*side; } } // End Square class

29 29 Understanding Polymorphism public class ShapeDemoClient { public static void main(String argv[ ]) { Shape c1 = new Circle("Circle C1"); Shape c2 = new Circle("Circle C2", 3.0f); Shape s1 = new Square("Square S1"); Shape s2 = new Square("Square S2", 3.0f); Shape shapeArray[ ] = {c1, s1, c2, s2}; for (int i = 0; i < shapeArray.length; i++) { System.out.println("The area of " + shapeArray[i].getName( ) + " is " + shapeArray[i].calculateArea( ) + " sq. cm."); } } // End main } // End ShapeDemoClient1 class rule of subtype dynamic binding


ดาวน์โหลด ppt 1 05_3_Constructor. 2 Constructor Method เมธอดที่มีชื่อเดียวกับกับชื่อคลาส ในการเขียนโปรแกรมเมื่อมีการสร้างอ๊อปเจ็คขึ้นมา โปรแกรมจะมีการเรียกเมธอดที่มีชื่อเดียวกับชื่อ.

งานนำเสนอที่คล้ายกัน


Ads by Google