Herança

Em OO, você irá constantemente ouvir a respeito de herança, isso simplesmente é como se denomina quando uma classe A herda todos os métodos e atributos de outra, ou seja: se uma classe B herda A, isso significa que tudo que A tem, B também tem, mas o contrário não necessariamente é verdade.

Herança em C# pode ser feita com : <classe herdada> entre o nome da classe e o {:

public class A {
  int x;
}

public class B : A {
  int y;
}

public class Example {
  public static void Main() {
    var a = new A();
    var b = new B();
    bx = 5;   // => OK
    b.y = 10; // => OK
    ax = 5;   // => OK
    a.y = 10; // => Erro: A não possui o atributo `y`
  }
}

Inclusive, quando se diz que B herda A, também se está dizendo que todo B é também um A, e portanto toda função que aceita um A aceita também um B:

static void Foo(A a) {
    // ...
}

static void Bar(B b) {
    // ...
}

static void Test() {
    var a = new A();
    var b = new B();

    Foo(a); // OK
    Foo(b); // OK

    Bar(a); // Erro: `A` não pode ser enviado a algo que pede `B`
    Bar(b); // OK
}