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
}