เรื่อง ไทป์ Casting ในหนังสือ หน้า 161 มีใครอ่านรู้เรื่องบ้างคับ
2 posters
หน้า 1 จาก 1
เรื่อง ไทป์ Casting ในหนังสือ หน้า 161 มีใครอ่านรู้เรื่องบ้างคับ
ในหนังสือหน้า 161 คือผมอ่านแล้ว งง ๆ
class A {..}
class B:A {..}
class C:B {..}
เมื่อกำหนดให้ A foo = new C(); แล้วแปลงไทป์โดยการ casting ผลที่ได้จะเป็นดังนี้
B bar = (B)foo; นี่คือการแปลงไทป์ของ foo (เดิมเป็น C) ให้กลายเป็นไทป์ B สามารถทำได้ เพราะ C เป็น derived class ของ B
A myA = (A)bar; นี่คือการแปลงไทป์ของ bar (จากเดิมเป็น B) ให้กลายเป็นไทป์ A ซึ่งทำได้เช่นกัน เพราะ A เป็น base class ของ B ซึ่งแปลงได้โดยไม่ต้องทำ casting อยู่แล้ว (คือเขียนว่า A myA = bar;)
ผมไม่เข้าใจที่ในหนังสืออธิบายอ่ะคับ (มีอยู่ 3 คำถาม)
1. อย่างโค้ด A foo = new C(); << ถ้าจะเรียกให้ถูกต้องเรียกว่า ประกาศตัวแปร foo โดยมีไทป์แบบ static เป็น A และแบบ dynamic เป็น C แบบนี้รึเปล่าคับ ?
2. อย่างคำอธิบายด้านบน ของโค้ด B bar = (B)foo; ที่บอกว่า (เดิมเป็น C) แต่พอผมมาดูรูปข้างล่าง
A foo = new C();
B bar = (B)foo;
บอกว่าเป็นการแปลงจากไทป์ A ไปเป็น ไทป์ B ? ตกลงมันแปลงยังไงคับ
3. A myA = (A)bar; << ผมเข้าใจว่า เป็นการแปลงไทป์ของ B ไปเป็นไทป์ของ A โดยที่ object ไม่ได้ถูกสร้างขึ้นแต่อย่างใด คือ object ที่ถูกชี้โดยตัวแปร bar ในคลาส B เปลี่ยนไปถูกชี้โดยตัวแปร myA ในคลาส A แบบนี้รึเปล่าคับ ? (ถ้าผมเข้าใจผิดยังไงช่วยชี้แนะด้วยคับ)
ขอบคุณคับ
class A {..}
class B:A {..}
class C:B {..}
เมื่อกำหนดให้ A foo = new C(); แล้วแปลงไทป์โดยการ casting ผลที่ได้จะเป็นดังนี้
B bar = (B)foo; นี่คือการแปลงไทป์ของ foo (เดิมเป็น C) ให้กลายเป็นไทป์ B สามารถทำได้ เพราะ C เป็น derived class ของ B
A myA = (A)bar; นี่คือการแปลงไทป์ของ bar (จากเดิมเป็น B) ให้กลายเป็นไทป์ A ซึ่งทำได้เช่นกัน เพราะ A เป็น base class ของ B ซึ่งแปลงได้โดยไม่ต้องทำ casting อยู่แล้ว (คือเขียนว่า A myA = bar;)
ผมไม่เข้าใจที่ในหนังสืออธิบายอ่ะคับ (มีอยู่ 3 คำถาม)
1. อย่างโค้ด A foo = new C(); << ถ้าจะเรียกให้ถูกต้องเรียกว่า ประกาศตัวแปร foo โดยมีไทป์แบบ static เป็น A และแบบ dynamic เป็น C แบบนี้รึเปล่าคับ ?
2. อย่างคำอธิบายด้านบน ของโค้ด B bar = (B)foo; ที่บอกว่า (เดิมเป็น C) แต่พอผมมาดูรูปข้างล่าง
A foo = new C();
B bar = (B)foo;
บอกว่าเป็นการแปลงจากไทป์ A ไปเป็น ไทป์ B ? ตกลงมันแปลงยังไงคับ
3. A myA = (A)bar; << ผมเข้าใจว่า เป็นการแปลงไทป์ของ B ไปเป็นไทป์ของ A โดยที่ object ไม่ได้ถูกสร้างขึ้นแต่อย่างใด คือ object ที่ถูกชี้โดยตัวแปร bar ในคลาส B เปลี่ยนไปถูกชี้โดยตัวแปร myA ในคลาส A แบบนี้รึเปล่าคับ ? (ถ้าผมเข้าใจผิดยังไงช่วยชี้แนะด้วยคับ)
ขอบคุณคับ
Aroma- จำนวนข้อความ : 3
Join date : 10/03/2010
Re: เรื่อง ไทป์ Casting ในหนังสือ หน้า 161 มีใครอ่านรู้เรื่องบ้างคับ
1. ไม่ใช่ครับ มันคือการประกาศตัวแปร foo ให้มีไทป์เป็น A แต่นิวโดยไปรันเมธอดคอนสทรักเตอร์ของไทป์ C
2. ถูกทั้งคู่ แล้วแต่มุมมอง
3. ไม่ใช่ครับ เป็นการสร้างออพเจ็กต์ใหม่ ของเดิมก็ยังมีอยู่เป็นอีกตัวต่างหาก
2. ถูกทั้งคู่ แล้วแต่มุมมอง
3. ไม่ใช่ครับ เป็นการสร้างออพเจ็กต์ใหม่ ของเดิมก็ยังมีอยู่เป็นอีกตัวต่างหาก
laploy- จำนวนข้อความ : 29
Join date : 03/03/2010
Re: เรื่อง ไทป์ Casting ในหนังสือ หน้า 161 มีใครอ่านรู้เรื่องบ้างคับ
ขอบคุณครับ อาจารย์ ไว้ผมมีข้อสงสัยอะไรจะมาปรึกษาใหม่คับ
Aroma- จำนวนข้อความ : 3
Join date : 10/03/2010
Similar topics
» เนื้อหา versioning ในหนังสือ เรียนรู้ด้วยตนเอง OOP C# .net สลับที่หรือไม่
» สงสัย source code ในหนังสือ oop c#
» set RSCM เข้า Report sever web service URLs ไม่ได้
» มีข้อสงสัยในบทที่ 4 หน้า 93 ครับผม
» การแสดงข้อมูล หน้า web โดย Ajax
» สงสัย source code ในหนังสือ oop c#
» set RSCM เข้า Report sever web service URLs ไม่ได้
» มีข้อสงสัยในบทที่ 4 หน้า 93 ครับผม
» การแสดงข้อมูล หน้า web โดย Ajax
หน้า 1 จาก 1
Permissions in this forum:
คุณไม่สามารถพิมพ์ตอบ
|
|