เช่นว่า ถ้าเรามี x อยู่สัก 3 ชั้น มันจะมองหาได้เพียงชั้นแรกเท่านั้น
class A { int x = 1; }
class B extends A { int x = 2; }
class C extends B {
void print() {
System.out.println("x = " + super.x); // จะได้ค่า 2
}
}
ทีนี้เลยเกิดคำถามว่า ถ้าเราอยากอ้างอิงไปหา int x ของคลาส A ล่ะจะไปยังไง ในจุดนี้เราใช้ การ casting เช่น ((A) this).x ได้ครับ เพื่อวิ่งไปอีกระดับนึง แต่ต้องแน่ใจว่า ตรงนั้นมี x ให้เราเรียกได้
โค้ดตัวอย่าง
package myPackage; public class SuperAdvanced extends B2 { public static void main(String[] args) { SuperAdvanced s = new SuperAdvanced(); s.print(); } void print() { int x = ((B1) this).x; System.out.println(x); } } class B1 { int x = 1; } class B2 extends B1 { int x = 2; }
ผลการทำงาน
1
ไม่มีความคิดเห็น:
แสดงความคิดเห็น