เรื่อง ไทป์ Casting ในหนังสือ หน้า 161 มีใครอ่านรู้เรื่องบ้างคับ

Go down

เรื่อง ไทป์ Casting ในหนังสือ หน้า 161 มีใครอ่านรู้เรื่องบ้างคับ

ตั้งหัวข้อ  Aroma on 14th March 2010, 6:12 pm

ในหนังสือหน้า 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 แบบนี้รึเปล่าคับ ? (ถ้าผมเข้าใจผิดยังไงช่วยชี้แนะด้วยคับ)

ขอบคุณคับ

Aroma

จำนวนข้อความ : 3
Join date : 10/03/2010

ดูข้อมูลส่วนตัว

ขึ้นไปข้างบน Go down

Re: เรื่อง ไทป์ Casting ในหนังสือ หน้า 161 มีใครอ่านรู้เรื่องบ้างคับ

ตั้งหัวข้อ  laploy on 15th March 2010, 3:11 am

1. ไม่ใช่ครับ มันคือการประกาศตัวแปร foo ให้มีไทป์เป็น A แต่นิวโดยไปรันเมธอดคอนสทรักเตอร์ของไทป์ C

2. ถูกทั้งคู่ แล้วแต่มุมมอง

3. ไม่ใช่ครับ เป็นการสร้างออพเจ็กต์ใหม่ ของเดิมก็ยังมีอยู่เป็นอีกตัวต่างหาก

laploy

จำนวนข้อความ : 29
Join date : 03/03/2010

ดูข้อมูลส่วนตัว

ขึ้นไปข้างบน Go down

Re: เรื่อง ไทป์ Casting ในหนังสือ หน้า 161 มีใครอ่านรู้เรื่องบ้างคับ

ตั้งหัวข้อ  Aroma on 18th March 2010, 10:10 pm

ขอบคุณครับ อาจารย์ ไว้ผมมีข้อสงสัยอะไรจะมาปรึกษาใหม่คับ Very Happy

Aroma

จำนวนข้อความ : 3
Join date : 10/03/2010

ดูข้อมูลส่วนตัว

ขึ้นไปข้างบน Go down

ขึ้นไปข้างบน


 
Permissions in this forum:
คุณไม่สามารถพิมพ์ตอบ