Abstract Interface: how the abstract BaseClass can interface. : interface « Class « C# / CSharp Tutorial

using System;

public interface ICompare {
    int GetValue();
    int Compare(ICompare ic);

abstract public class BaseClass : ICompare {
    int nValue;

    public BaseClass(int nInitialValue) {
        nValue = nInitialValue;

    public int Value {
        get { return GetValue(); }
    public int GetValue() {
        return nValue;

    abstract public int Compare(ICompare bc);

public class SubClass : BaseClass {
    public SubClass(int nInitialValue)
        : base(nInitialValue) {

    override public int Compare(ICompare ic) {
        return GetValue().CompareTo(ic.GetValue());

public class Class1 {

    public static void Main(string[] strings) {
        SubClass sc1 = new SubClass(10);
        SubClass sc2 = new SubClass(20);

        MyFunc(sc1, sc2);

    public static void MyFunc(ICompare ic1, ICompare ic2) {
        Console.WriteLine("bc1.Compare(bc2) returned {0}",

7.32.2.Interface Properties
7.32.3.Creating an interface.
7.32.4.Use interface keyword to define an interface
7.32.5.Implement an interface
7.32.6.Multiple Implementation: implement two interfaces
7.32.7.Inherited interface
7.32.8.Declare an interface and implement it
7.32.9.Interfaces and Inheritance
7.32.10.Base class and interface
7.32.11.Duplicate Interface Members
7.32.12.Accessing an interface from a class.
7.32.13.Abstract Interface: how the abstract BaseClass can interface.
7.32.14.Multiple Interfaces
7.32.15.Interface Explicit Implementation