1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived...
-
Upload
andrew-davis -
Category
Documents
-
view
218 -
download
0
Transcript of 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived...
![Page 1: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/1.jpg)
1
Derived Classes and Inheritance
Chapter 12
![Page 2: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/2.jpg)
2
Objectives
You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic methods. Use the “protected” access specifier
appropriately. Define methods to extend existing
classes and structs without defining a derived class.
![Page 3: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/3.jpg)
3
Inheritance
Derived classes and inheritance in C# are similar to C++. Virtual methods Polymorphism
If you are comfortable with the concept of inheritance from using C++, you can skip over (or just skim) this section.
Continue with Extension Methods New in C#.
![Page 4: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/4.jpg)
4
Derived Classes
A derived class extends the definition of an existing class, called the base class. Can add new fields. Can add new methods.
Objects of a derived class inherit the methods and fields of the base class. Can potentially provide a new defintion for
an inherited method. Override the original defintion.
![Page 5: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/5.jpg)
5
System.Object
All classes in C# are derived (directly or indirectly) from System.Object.
Inherit methods Equals GetType ToString (others)
Inheritance from System.Object is implicit. Need not be specified in class defintion.
![Page 6: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/6.jpg)
6
Derived Classes
Objects of a derived class can be used anywhere objects of the base class could be used. Variables Arguments to methods
"Is a" relationship The Liskov Substitution Principle (1987) http://en.wikipedia.org/wiki/Liskov_substitution_princi
ple
![Page 7: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/7.jpg)
7
Barbara Liskov
Recipent of the 2008 Turing Award First woman in the US to receive a
PhD in computer science. Stanford 1968
http://en.wikipedia.org/wiki/Barbara_Liskov
![Page 8: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/8.jpg)
88
Protected Access
Another value like public and private
“protected” means that the method or field can be accessed from inside the same class or a derived class but not from elsewhere.
Normal for a class that will have derived classes (instead of private.)
If protection is “private” code in derived classes cannot access the member.
![Page 9: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/9.jpg)
9
Example
In Visual Studio 2008, create a new C# Console project called Shape_Example.
Add new class, Shape.
![Page 10: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/10.jpg)
10
using System;
namespace Shape_Example
{
public class Shape
{
protected String name;
public String Name
{
get { return name; }
}
public Shape(String name_)
{
name = name_;
}
public override string ToString()
{
return "I am a shape by the name of " + name;
}
}
}
Class Shape
Replace the ToString method inherited from class Object
![Page 11: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/11.jpg)
11
The Main Program
using System;
namespace Shape_Example
{
class Program
{
static void Main(string[] args)
{
Shape s1 = new Shape("Sue");
Console.WriteLine(s1.ToString());
Console.ReadLine(); // Keep the window open
}
}
}
![Page 12: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/12.jpg)
12
Program in Action
![Page 13: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/13.jpg)
13
Wrappings Omitted
To save space on the slides, I will omit the wrappings:
using System;
namespace Shape_Example
{
...
}
Generated automatically by Visual Studio when a class is added to a project
![Page 14: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/14.jpg)
14
Class Circle
Add new class Circle Don't download This Circle class will be somewhat
different from the previous one.
![Page 15: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/15.jpg)
15
Add Class Circle
![Page 16: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/16.jpg)
16
class Circle : Shape{ double radius;
public Circle(double radius_, String name_) : base (name_) {
this.radius = radius_; }
public double Radius
{
get { return radius; }
} public override String ToString() { return "I am a Circle of radius " + radius + " by the name of " + name; }}
Creating Derived Classes
This makes Circle inherit from Shape.
Call constructor for Shape passing name_.
Replace the ToString method inherited from Shape.
![Page 17: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/17.jpg)
17
Using the Derived Class
class Program
{
static void Main(string[] args)
{
Shape s1 = new Shape("Sue");
Console.WriteLine(s1.ToString());
Circle c1 = new Circle(5, "Clyde");
Console.WriteLine(c1.ToString());
Console.ReadLine();
}
}
![Page 18: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/18.jpg)
18
Program in Action
![Page 19: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/19.jpg)
19
class Rectangle : Shape{ private double length; private double width;
public Rectangle(double length_, double width_, String name_) : base (name_)
{ length = length_; width = width_;
}
Class Rectangle
![Page 20: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/20.jpg)
20
Class Rectangle
public double Length { get { return length; } }
public double Width { get { return width; } }
public override String ToString() { return "I am a " + length + " by " + width + " rectangle by the name of " + name; }}
![Page 21: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/21.jpg)
21
Using Class Rectangle
using System;class Class1{
static void Main(string[] args){ Shape s1 = new Shape("Sue");
Console.WriteLine(s1.ToString());
Circle c1 = new Circle(5, "Clyde"); Console.WriteLine(c1.ToString());
Rectangle r1 = new Rectangle (2, 4, "Rhonda"); Console.WriteLine (r1.ToString()); Console.ReadLine();
}}
![Page 22: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/22.jpg)
22
Program in Action
![Page 23: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/23.jpg)
23
Class Shape{
...public virtual string Method_Name(){
...}
Says that derived classes can provide their own version of this method.
Automatically virtual in all derived classes.
ToString() was declared as virtual in the definition of class System.Object.
ToString() is automatically virtual in every class.
Each class can provide its own version of ToString().
Virtual Methods
![Page 24: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/24.jpg)
24
Virtual Methods
In C# methods are NOT virtual by default.
Like C++ Unlike Java
You must DECLARE methods as virtual if you want them to be virtual which is the normal case!
![Page 25: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/25.jpg)
25
Virtual Methods
If a base class method is virtual, a derived class can provide its own implementation. Must use the “override” keyword.
public override void draw() Must have same signature. Must have same accessibility (e.g. public)
Calls to the method using an object of the derived class will invoke the derived class’s implementation. Polymorphism
![Page 26: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/26.jpg)
26
Virtual Methods
public class Shape{ protected String name;
public Shape (String name_) { name = name_; }
public virtual double Area() { return 0.0; }
![Page 27: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/27.jpg)
27
Overriding the Base Class’s Area Method
public class Circle : Shape{ double radius;
public Circle(double radius_arg, String name_arg) : base (name_arg) {
this.radius = radius_arg; }
public override double Area() { return Math.PI*radius*radius; }
...
For now, we don’t implement Area() in the other derived class.
![Page 28: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/28.jpg)
28
Using Area() Method
Add to Main()
Console.WriteLine();Console.WriteLine("Areas:");Console.WriteLine(s1.Name + ": " + s1.Area());Console.WriteLine(c1.Name + ": " + c1.Area());Console.WriteLine(r1.Name + ": " + r1.Area());
![Page 29: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/29.jpg)
29
Program in Action
![Page 30: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/30.jpg)
30
Add Area() to class Rectangle
public class Rectangle : Shape{ private double length; private double width;
public Rectangle(double length_, double width_, String name_) : base (name_) { length = length_; width = width_; }
public override double Area() { return length*width; }
Main is unchanged.
![Page 31: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/31.jpg)
31
Program in Action
![Page 32: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/32.jpg)
32
Virtual Method Example
What if we had defined c1 as type Shape rather than type Circle?
![Page 33: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/33.jpg)
33
c1 as a Shape
static void Main(string[] args){ Shape s1 = new Shape("Sue"); Console.WriteLine(s1.ToString());
Shape c1 = new Circle(5, "Clyde"); Console.WriteLine(c1.ToString());
Rectangle r1 = new Rectangle (2, 4, "Rhonda"); Console.WriteLine(r1.ToString()); Console.WriteLine(); Console.WriteLine("Areas:"); Console.WriteLine(s1.Name() + ": " + s1.Area()); Console.WriteLine(c1.Name() + ": " + c1.Area()); Console.WriteLine(r1.Name() + ": " + r1.Area()); Console.ReadLine();}
![Page 34: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/34.jpg)
34
Virtual Method Example
Output is the same!
This is polymorphism.
![Page 35: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/35.jpg)
35
Virtual Method Example
How did the compiler know to call Circle.Area() rather than Shape.Area?
Ans: It didn’t!The linkage to the Area method() was not resolved until run time.
This is know as late binding.
![Page 36: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/36.jpg)
36
Late Binding
Late binding is the key to polymorphism.
Virtual methods are called indirectly through a pointer in an overhead area of the object. (not accessible to the programmer.)
The specific object used for the call determines which version of the method is invoked.
![Page 37: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/37.jpg)
37
Late Binding
If the method had not been declared as virtual, the call to c1.Area() would have been resolved at compile time.
The declaration of c1 would have determined which version of Area() was invoked by the call c1.Area();
End of Section
![Page 38: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/38.jpg)
38
Extension Methods
New feature in C# 3.0 Pages 233 – 236 in textbook
Permits us to add methods to existing classes (or structs) without creating a derived class.
Extends the class definition for the program in which it is defined.
![Page 39: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/39.jpg)
39
Extension Methods
Let’s extend class String with a method that determines whether a string is a palindrome.
Create a new C# console application Extension_Method_Demo
![Page 40: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/40.jpg)
40
Extension Methods
![Page 41: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/41.jpg)
41
Defining an Extension Method
An extension method must be a static method defined within a static class.
The type to be extended is the type of a parameter of the method Preceeded by the keyword this.
![Page 42: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/42.jpg)
42
Defining an Extension Method
Let’s extend the String class with a method that says whether or not a given string is a palendrome. Same letters forward and backward. Ignoring case and non-letter characters.
Strategy: Build strings consisting of only the letters,
all in upper case, in the original string. Forward and backward copies. Check if they are identical.
![Page 43: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/43.jpg)
43
Add Static Class Utils
![Page 44: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/44.jpg)
44
An Extension Method
![Page 45: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/45.jpg)
45
Utils.cs
using System;
using System.Text;
using System.Collections.Generic;
static class Utils
{
public static bool Is_Palindrome(this String s)
{
StringBuilder forward = new StringBuilder();
StringBuilder reverse = new StringBuilder();
Because Strings are immutable in C#, modifying a String is inefficient.
StringBuilder is the preferred way to build up a string.
Convert to String when finished.
![Page 46: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/46.jpg)
46
Utils.cs continued
foreach (char c in s)
{
if (char.IsLetter(c))
{
forward.Append(char.ToUpper(c));
reverse.Insert(0, char.ToUpper(c));
}
}
String forward_string = forward.ToString();
String reverse_string = reverse.ToString();
return forward_string == reverse_string;
}
}
![Page 47: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/47.jpg)
47
Program.cs
static void Main(string[] args)
{
Console.WriteLine("This program determines whether strings");
Console.WriteLine("that you type are palindromes");
while (true)
{
Console.WriteLine("\n\nType a sentence.");
String s = Console.ReadLine();
if (s.Is_Palindrome())
{
Console.WriteLine(@"""" + s + @""" is a palindrome");
}
else
{
Console.WriteLine(@"""" + s + @""" is not a palindrome");
}
}
Console.ReadLine(); // Hold window open.
}
![Page 48: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/48.jpg)
48
Program in Action
![Page 49: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/49.jpg)
49
Summary
Inheritance is one of the key concepts of object oriented programming. Permits us to extend existing classes
without modifying the original code.
Objects of a derived class can be used anywhere an object of the base class could be used. Circle “IS A” Shape
![Page 50: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/50.jpg)
5050
Summary
A derived class can provide its own version of any virtual method defined in its base class.
Methods in other classes need not be aware of which derived class they are dealing with. Can invoke any public method declared in the
base class , using a reference to the base class.
Objects of a derived class will do the right thing.
Polymorphism.
![Page 51: 1 Derived Classes and Inheritance Chapter 12. 2 Objectives You will be able to: Create derived classes in C#. Understand polymorphism. Write polymorphic.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649d0b5503460f949ded7c/html5/thumbnails/51.jpg)
51
Summary
Extension methods provide an alternative to creating a derived class.
Permits us to define new static methods to existing classes and structs without creating a derived class.
End of Presentation