<< Chapter < Page | Chapter >> Page > |
Note the use of the override declaration in Listing 2 . In C#, if one method overrides another, it is necessary to declare that fact.
If you fail to make the override declaration in Listing 2 , you will get a compiler warning that reads something like the following:
warning CS0114: 'B.m()' hides inherited member 'A.m()'.
To make the current member override that implementation,add the override keyword. Otherwise add the new keyword.
I'm not going to get into a discussion of the difference between overriding and hiding in this module. Perhaps I will find the time to provide such adiscussion in a future module.
Like the inherited version of the method, the overridden version displays a message indicating that it has been called. However, the message is differentfrom the message displayed by the inherited version discussed above. The overridden version tells us that it is defined in the class named B .
Again, this message will allow us to determine which version of the method is executed in each case discussed later.
Listing 3 shows the beginning of the driver class named Polymorph03 .
Listing 3 . Beginning of the driver class.
public class Polymorph03 {
public static void Main() {Object var = new B();
//Following will compile and run((B)var).m();
The code in the Main method begins by instantiating a new object of the class named B , and assigning the object's reference to a reference variable of type Object .
If you have read the module titled Xna0112-Type Conversion, Casting, and Assignment Compatibility , it will come as no surprise to you that the second statement in the Main method, which casts the reference down to type B and calls the method named m on it, will compile and execute successfully.
The execution of the method produces the following output on the computer screen:
m in class B
By examining the output, you can confirm that the version of the method that was overridden in the class named B is the version that was executed.
This should also come as no surprise to you. The cast converts the type of the reference from type Object to type B .
You can always call a public method belonging to an object using a referenceto the object whose type is the same as the class from which the object was instantiated.
Notification Switch
Would you like to follow the 'Xna game studio' conversation and receive update notifications?