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

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

Inheritance การสืบทอด คลาส. การนำ Code กลับ นำมาใช้ใหม่ การนำ Code กลับนำมาใช้ใหม่ คือ การใช้ Code ที่มีอยู่แล้วมาสร้างคลาส ใหม่ซึ่งอาจจะเป็นการสืบทอดจากคลาส.

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


งานนำเสนอเรื่อง: "Inheritance การสืบทอด คลาส. การนำ Code กลับ นำมาใช้ใหม่ การนำ Code กลับนำมาใช้ใหม่ คือ การใช้ Code ที่มีอยู่แล้วมาสร้างคลาส ใหม่ซึ่งอาจจะเป็นการสืบทอดจากคลาส."— ใบสำเนางานนำเสนอ:

1 Inheritance การสืบทอด คลาส

2 การนำ Code กลับ นำมาใช้ใหม่ การนำ Code กลับนำมาใช้ใหม่ คือ การใช้ Code ที่มีอยู่แล้วมาสร้างคลาส ใหม่ซึ่งอาจจะเป็นการสืบทอดจากคลาส หลัก (Inheritance) ที่ได้นำมาเป็น ส่วนประกอบคลาสใหม่ที่สร้าง การสืบทอดจะเป็นการนำ Code เดิม กลับมาใช้อีกครั้ง โดยที่เราไม่ต้องเขียน ใหม่ ทำให้ประหยัดเวลาและถ้า Code นั้นได้ มีการตรวจสอบข้อบกพร่องอย่างดีแล้ว ยิ่งทำให้ช่วยลดเวลาในการตรวจสอบ Code อีกครั้ง

3 การนำคลาสกลับมาใช้อาจจำแนก ได้เป็น 4 วิธี คือ 1. นำโปรแกรมที่เขียนเก็บไว้มาใช้ 2. เขียนใหม่จากข้อมูลที่มีอยู่ 3. นำคลาสมาใช้ในลักษณะ Composition 4. นำคลาสกลับมาใช้ภายใต้การสืบทอด คุณสมบัติ (Inheritance)

4 คือ การใช้คลาสที่มีอยู่แล้วมาสร้างเป็น คลาสใหม่ ( คลาสย่อย ) โดยการสืบทอด วิธีการนี้ เราสามารถใช้คุณสมบัติต่างๆของ คลาสเดิม เช่น ตัวแปร เมธอด คอนสตัก เตอร์ หรืออื่นๆ ทั้งหมดที่คลาสเดิมมีอยู่แล้ว ได้ โดยไม่ต้องมีการแก้ไขใดๆ รวมทั้งยัง สามารถเพิ่มเติมคุณสมบัติใหม่ๆ ที่คลาสเดิม ไม่มีได้อีกด้วย เราเรียกคลาสที่มีอยู่ว่าคลาสหลัก (Superclass) และคลาสใหม่ที่สืบทอดว่า คลาสสืบทอด หรือ คลาสลูก (Subclass) การสืบทอดคุณสมบัติ (Inheritance)

5 - การสืบทอดไม่ได้จำกัดเพียงระหว่าง superclass และ subclass เท่านั้น -sub class สามารถเป็น superclass ของ class อีกหนึ่งได้ - การเขียนแผนภาพแสดงความสัมพันธ์ นิยมเขียนเป็นแผนผังแบบต้นไม้ (Tree) การถ่ายทอดแบบลำดับชั้น (Hierarchical Class)

6 Class สัตว์ Class สัตว์ปีก Class สัตว์เลื้อยคลาน Class สัตว์บก Class สัตว์น้ำ แผนผังแบบต้นไม้ (Tree)

7

8 การ Inheritance สามารถทำได้ 2 ลักษณะ คือ 1. Single Inheritance คือ การที่ subclass ได้รับการถ่ายทอดคุณสมบัติมาจาก Superclass เพียงคลาสเดียว Class A และ Class B Class A Class B

9 2. Multiple Inheritance คือการที่ subclass ได้รับการถ่ายทอดคุณสมบัติต่างๆ มาจาก Superclass มากกว่า 1 คลาส Class A Class B Class C

10 - สร้าง class หลักขึ้นมา 1 class แล้ว กำหนดให้มีคุณสมบัติต่างๆ ซึ่งเป็น คุณสมบัติโดยรวม ที่ class อื่นๆ จำเป็นต้องมี - จากนั้นจึงสร้าง class คลาสอื่นขึ้นมา เพื่อ รับการถ่ายทอดคุณสมบัติทั้งหมดจาก class หลักมาโดยอัตโนมัติ โดยไม่ต้อง สร้างขึ้นใหม่ - สามารถสร้างคุณสมบัติอื่นๆ นอกเหนือจาก class หลักขึ้นมาเองได้ หลักในการสร้างการ สืบทอด

11 Superclass จะสร้างเหมือนกับการสร้าง Class ทั่วไป แต่การสร้าง Subclass จะ ระบุคำว่า “extends” ร่วมด้วยเพื่อให้ทราบ ว่า Subclass จะใช้คุณสมบัติจาก Superclass ชื่ออะไร รูปแบบดังนี้ subclass_name คือ ชื่อของคลาสใหม่หรือ คลาสลูก superclass_name คือ ชื่อของคลาสที่สืบ ทอดหรือคลาสแม่ class subclass_name extends ชื่อ superclass_name การสร้าง Superclass และ Subclass

12 class A { int x ; } class B extends A { int y ; } ทำการสร้าง instance จากคลาสทั้ง 2 A a = new A() ; B b= new B() ; การสร้าง Superclass และ Subclass ( ต่อ )

13 Example Superclass 1 class A{ void printA(){ System.out.printl n("A"); } class B extends A{ void printB() { System.out.printl n("B"); } public class inheritance{ public static void main(String[] args) { A m = new A(); B n = new B(); m.printA(); n.printA(); n.printB(); } AABAAB

14 class A{ int x = 1; } class B extends A{ int y = 3; } class C extends B{ int z = 4; } Example Superclass 2 public class inheritance1{ public static void main(String[] args) { A o = new A(); System.out.println (0.x); B p = new B(); System.out.println (p.x+ “,”+p.y); C m = new C(); System.out.println (m.x+m.y+m.z); } 1 1,3 8

15 การเข้าถึงด้วย access modifier public ระบุที่ method หรือ variable แสดงว่า class ใดๆ สามารถ access ได้ private ระบุที่ method หรือ variable สามารถใช้ access ได้เพียงใน class นั้น เท่านั้น subclass ไม่สามารถ access ได้ protected method หรือ variable สามารถ access เมื่อเป็นสมาชิกของ class หรือ subclass การป้องกันการเรียกใช้ ภายใน Superclass

16 การป้องกันการเรียกใช้ ภายใน Superclass ( ต่อ )

17 class A{ protected int x = 10; private int w = 5; } class B extends A{ int y; void Mul() { y = x*w; System.out.pri ntln (y); } Example 1 public class Test{ public static void main(String[] args) { B m = new B(); m.Mul(); } Compile Error / private

18 การใช้ keyword super ใช้สำหรับการทำงานใน Subclass ซึ่งมี ประโยชน์ 2 ประการ คือ 1. เพื่อเรียกใช้สมาชิกของ Subclass และ Superclass ที่ใช้ชื่อสมาชิกเดียวกัน รูปแบบ super.member เช่น super.x=x; super.r=r;

19 การใช้ super เรียกสมาชิก ของ Superclass class A{ int x; } class B extends A{ int x; B(int a,int b) { super.x = a; x = b; } void show(){ System.out.println("x in superclass : "+super.x); System.out.println("x in subclass : "+x); } public class super1{ public static void main(String[] args) { B m = new B(5,8); m.show(); } x in superclass : 5 x in subclass : 8

20 การใช้ keyword super ( ต่อ ) 2. Subclass สามารถเรียกใช้ Constructor Method ของ Superclass โดยไม่ จำเป็นต้องสร้าง Constructor ของตนเอง ขึ้นมาใหม่ (Constructor จะไม่ถูกสืบ ทอดจากการ inherit ด้วย extends) รูปแบบ super(argument) เช่น super(r)

21 class A{ A(String s){System.out.println(s);} } class B extends A{ B() { super("Hello"); System.out.println("Good Boy"); } public class super_constru{ public static void main(String[] args) { B m = new B(); } การใช้ super เรียก Constructor ของ Superclass1 Hello Good Boy

22 class A{ int a,b; A(int a, int b){ this.a = a; this.b = b; } class B extends A{ int c; B(int c) { super(0,0); this.c = c; } public class super_constru2{ public static void main(String[] args) { B m = new B(5); System.out.println("a = "+m.a+ " b = " +m.b+ " c = "+m.c); } การใช้ super เรียก Constructor ของ Superclass2 a=0 b=0 c=5

23 Inheritance Assessments class A { int x;.. } class B extends A { int x;.. } class C extends B { int x;.. } x this.x super.x ((B)this).x ((A)this).x super.super.x x in class C x in class B x in class A Refer a difference variable from class C

24 Inheritance Solutions A [x] B C this.x ((B)this).x ((A)this).x A B C Class DiagramMemory Space

25 Shadowing ถ้าเรากำหนด data member ในคลาสลูก มีชื่อเหมือนกับ data member ในคลาส แม่ ชื่อของลูกจะบัง (shadow) ชื่อในคลาส แม่ class A {int x = 1;} class B extends A {float x = 2.0f;} class shadowing { public static void main(String args[]) { B b = new B(); A c = new A(); System.out.println(b.x); System.out.println(c.x); } 2.0 1

26 แบบฝึกหัด Point2D x,y : int Point2D(x:in t,y:int) Point2D(x:in t) Point2D() Point3D z : int Point3D(x:int,y :int,z:int) Point3D(z:int) Point3D() Test2D3D Main():void

27 Class Point2D - Point2D(x:int,y:int) ใช้ set ค่า x y - Point2D(x:int) เรียก constructor Point2D(x:int,y:int) มาใช้ กำหนดค่า เป็น (x,0); - Point2D() เรียก constructor Point2D(x:int,y:int) มาใช้ กำหนดค่าเป็น (0,0)

28 Class Point3D - Extends จาก Point2D - Point3D(x:int,y:int,z:int) ใช้ set ค่า x y z (x,y เรียกใช้ constructor จาก Point2D (x:int,y:int) - Point3D(z:int) ใช้ set ค่า z และเรียก ใช้ constructor จาก Point2D(x:int,y:int) กำหนดค่า เป็น (0,0); - Point3D() เรียก constructor Point3D(x:int,y:int,z:int) มาใช้ กำหนดค่าเป็น (0,0,0)

29 ผล RUN x = 0 y = 0 x = 5 y = 0 x = 5 y = 10 x = 0 y = 0 z = 0 x = 0 y = 0 z = 15 x = 20 y = 30 z = 4


ดาวน์โหลด ppt Inheritance การสืบทอด คลาส. การนำ Code กลับ นำมาใช้ใหม่ การนำ Code กลับนำมาใช้ใหม่ คือ การใช้ Code ที่มีอยู่แล้วมาสร้างคลาส ใหม่ซึ่งอาจจะเป็นการสืบทอดจากคลาส.

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


Ads by Google