override - a method of a base class is overridden in a derived class
new - เมธอดของคลาสแม่ถูกซ่อนเอาไว้จากคลาสลูก โดยการประกาศเมธอดที่เหมือนกับคลาสแม่ในคลาสลูก
new - a method of a base class is hidden in a derived class by defining the same method of a base class in a derived class
ถ้าไม่ได้กำหนดคีย์เวิร์ดว่าเป็น override หรือ new ค่าตั้งต้นจะเป็น new
If you do not specify either override or new keyword, the default keyword is new
สำหรับตัวอย่าง ประกาศคลาสตามด้านล่าง
For example, define classes as follow
- class A
- {
- public virtual void print()
- {
- Console.WriteLine("This is A");
- }
- }
- class B : A
- {
- public override void print()
- {
- Console.WriteLine("This is B");
- }
- }
- class C : A
- {
- public new void print()
- {
- Console.WriteLine("This is C");
- }
- }
ในเมธอด main, ใส่โค้ดตามด้านล่าง แล้วคอมไพล์และรัน
In main method, add the code below then compile and run
- A a = new A();
- B b = new B();
- C c = new C();
- a.print();
- b.print();
- c.print();
ผลลัพธ์ที่ได้ คือ
The output is
This is A
This is B
This is C
นี่เป็นเพราะเมธอด print ของแต่ละคลาสถูกเรียก
This is because print method of each class is called
ในเมธอด main, เปลี่ยนโค้ดตามด้านล่าง แล้วคอมไพล์และรัน
In main method, change the code as follow then compile and run
- A[] a = new A[3];
- a[0] = new A();
- a[1] = new B();
- a[2] = new C();
- for (int i = 0; i < 3; i++)
- a[i].print();
ผลลัพธ์ที่ได้ คือ
The output is
This is A
This is B
This is A
นี่เป็นเพราะเมธอด print ของคลาส A ถูกเรียกจากคลาสลูก
This is because print method of class A is called from inherited class
สำหรับคลาส B, เมธอด print ของคลาส A ถูกเขียนทับในคลาส B ดังนั้นเมธอด print ของคลาส B จึงถูกเรียกแทน
For class B, print method of class A is overridden by class B so print method of class B is called instead
สำหรับคลาส C, เมธอด print ของคลาส A ถูกเรียก เพราะเมธอด print ของคลาส C เป็นเมธอดที่นิยามขึ้นมาใหม่ ซึ่งไม่มีส่วนเกี่ยวข้องกับคลาส A เลย
For class C, print method of class A is called because print method of class C is new defined method that is not related to class A
No comments:
Post a Comment