Tutorial by Examples

To avoid duplicating code, define common methods and attributes in a general class as a base: public class Animal { public string Name { get; set; } // Methods and attributes common to all animals public void Eat(Object dinner) { // ... } public void Stare()...
public class Animal { public string Name { get; set; } } public interface INoiseMaker { string MakeNoise(); } //Note that in C#, the base class name must come before the interface names public class Cat : Animal, INoiseMaker { public Cat() { Name = "Ca...
public class LivingBeing { string Name { get; set; } } public interface IAnimal { bool HasHair { get; set; } } public interface INoiseMaker { string MakeNoise(); } //Note that in C#, the base class name must come before the interface names public class Cat : LivingBei...
interface BaseInterface {} class BaseClass : BaseInterface {} interface DerivedInterface {} class DerivedClass : BaseClass, DerivedInterface {} var baseInterfaceType = typeof(BaseInterface); var derivedInterfaceType = typeof(DerivedInterface); var baseType = typeof(BaseClass); var derived...
Unlike interfaces, which can be described as contracts for implementation, abstract classes act as contracts for extension. An abstract class cannot be instantiated, it must be extended and the resulting class (or derived class) can then be instantiated. Abstract classes are used to provide generi...
When you make a subclass of a base class, you can construct the base class by using : base after the subclass constructor's parameters. class Instrument { string type; bool clean; public Instrument (string type, bool clean) { this.type = type; this.clean = c...
Consider we have a class Animal which has a child class Dog class Animal { public Animal() { Console.WriteLine("In Animal's constructor"); } } class Dog : Animal { public Dog() { Console.WriteLine("In Dog's constructor"); } ...
There are several ways methods can be inherited public abstract class Car { public void HonkHorn() { // Implementation of horn being honked } // virtual methods CAN be overridden in derived classes public virtual void ChangeGear() { // Implementation of gear...
Improper Inheritance Lets say there are 2 classes class Foo and Bar. Foo has two features Do1 and Do2. Bar needs to use Do1 from Foo, but it doesn't need Do2 or needs feature that is equivalent to Do2 but does something completely different. Bad way: make Do2() on Foo virtual then override it in B...
One time definition of a generic base class with recursive type specifier. Each node has one parent and multiple children. /// <summary> /// Generic base class for a tree structure /// </summary> /// <typeparam name="T">The node type of the tree</typeparam> pub...

Page 1 of 1