Há muito conteúdo nesta seção, e o arquivo de vídeo ultrapassa 4M, então o tempo de download pode demorar um pouco mais.
Há muito conteúdo nesta seção, porque há muito conteúdo
!apenas em herança, então aproveitarei a oportunidade para usar todas as coisas anteriores, o que é considerado uma revisão. Algumas coisas nesta seção são explicadas repetidamente duas ou três vezes. domine-os. Isso é o mais importante! ! Se você não tiver certeza sobre o conteúdo da revisão nesta seção, leia os capítulos relevantes anteriores! !
A seguir falaremos sobre herança. Para entender herança, primeiro precisamos saber por que a herança é necessária.
Suponha que uma classe que criamos para o sistema de notícias já possua conexão de banco de dados, inicialização e funções como consulta, adição, exclusão, modificação, etc. .!
Então definitivamente teremos que fazer algumas consultas, modificações diferentes, etc. Por exemplo, a coluna de notícias e o gerenciamento de usuários precisam usar as classes que mencionamos anteriormente, mas a diferença é que exigem resultados diferentes. o que fazer? Existem duas maneiras: uma é criar classes para eles separadamente e copiar a classe de conexão do banco de dados duas vezes. Mas se isso acontecer, também podemos chamar frequentemente os membros da classe de banco de dados. isso acontecer, nosso código não ficaria muito inchado? Você sabe por que as pílulas para perder peso são tão populares?
Deprimido, o que devo fazer? Simples, usamos herança para completá-la. Vamos descrever brevemente a herança. É que a subclasse (classe derivada) possui todas as características da classe pai (classe base) e ao mesmo tempo possui características próprias. Acho que isso deveria deixar claro!
Obs: A herança .Net só permite herança diretamente de outra classe, e não pode herdar múltiplas classes ao mesmo tempo. Parece que só pode haver um pai (na verdade isso não é absoluto, haha, é realmente interessante pensar na Microsoft, ainda podemos usar interfaces para implementar herança múltipla), mas a herança multinível é possível. Por exemplo, pode haver um pai e um avô no topo e um filho e um neto na parte inferior.
Vamos dar uma olhada em algo intuitivo:
Se olharmos a imagem acima, descobriremos que os níveis mais baixos são mais específicos. Então podemos entender que humano é a classe base (classe pai) de todas as classes, e as seguintes são classes derivadas (subclasses). Na verdade, as nossas subcategorias seguintes podem ser estendidas para baixo.
Em C#, uma classe derivada herda membros de sua classe base direta: métodos, campos, propriedades, eventos e indicadores de índice. Uma classe derivada herda implicitamente todos os membros da classe base direta, exceto construtores e destruidores.
2. A herança em C# obedece às seguintes regras:
(Este não é um resumo meu, entrei na Internet e copiei de outra pessoa. Haha!!)
1. Herança é transitiva. Se C é derivado de B, e B é derivado de A, então C não apenas herda os membros declarados em B, mas também herda os membros em A. A classe Object serve como classe base para todas as classes.
2. As classes derivadas devem ser extensões das classes base. Uma classe derivada pode adicionar novos membros, mas não pode remover as definições de membros herdados.
3. Construtores e destruidores não podem ser herdados. Além disso, outros membros podem ser herdados independentemente dos métodos de acesso definidos para eles. A forma como os membros são acessados na classe base só pode determinar se as classes derivadas podem acessá-los.
4. Se uma classe derivada definir um novo membro com o mesmo nome de um membro herdado, ela poderá sobrescrever o membro herdado. Mas isso não significa que a classe derivada excluiu esses membros, apenas que esses membros não podem mais ser acessados. (Deve-se notar que se um atributo ou método tiver o mesmo nome, mas uma assinatura diferente, não é uma substituição, mas uma sobrecarga.)
5. Uma classe pode definir métodos virtuais, atributos virtuais e indicadores de índice virtual, e sua derivação. As classes podem sobrecarregar esses membros para que as classes de implementação possam exibir polimorfismo.
6. As classes derivadas só podem herdar de uma classe e a herança múltipla pode ser alcançada por meio de interfaces.
Em uma subclasse, podemos acessar membros da classe base por meio da palavra-chave base:
chamar métodos na classe base que foram substituídos por outros métodos.
Especifica o construtor da classe base que deve ser chamado ao criar uma instância de uma classe derivada.
O acesso à classe base só é possível em construtores, métodos de instância ou acessadores de propriedades de instância.
É um erro usar a palavra-chave base de um método estático.
Revisitando Modificadores de Acesso
Modificadores de acesso são palavras-chave que especificam a acessibilidade de um membro ou tipo declarado. Existem quatro modificadores de acesso na herança de classe: público protegido interno privado. Use esses modificadores de acesso para especificar os cinco níveis de acessibilidade a seguir: público protegido interno interno protegido privado.
Significado de acessibilidade declarado
O acesso público é irrestrito.
o acesso protegido é limitado à classe que contém ou aos tipos derivados da classe que contém.
O acesso interno é limitado ao projeto atual.
O acesso interno protegido é limitado ao item ou tipo atual derivado da classe que o contém.
o acesso privado é limitado ao tipo que contém.
Vejamos um exemplo abaixo, vamos nos ater ao tema pessoas.
Veja os comentários de todos os códigos!!