Dúvida na criação de matrizes quando não sei a quantidade de linhas

POO tem 4 pilares: encapsulamento, herança, polimorfismo e abstração.

O @staroski foi cirúrgico quanto à herança, numa explicação direta e objetiva. Meu jeito de explicar é um pouco diferente. Vamos ver de outra forma…

Na hora de pensar em composição e herança, pense assim:

"é um" x "tem um"

Na composição você tem colaboração entre os objetos. Aplica-se o “tem um(a)”
Exemplos:

  • carro tem um motor
  • carro tem portas
  • casa tem uma cozinha
    Então, via de regra, “tem” é indicativo de composição.

Já herança você tem um caso específico (subclasse) que herda variáveis e funções do caso genérico (a superclasse). A expressão é “é um”. Exemplos:

  • bugre é um carro
  • jipe é um carro
  • maçã é uma fruta
  • homem é um mamífero

Então se você pensar em um ser humano, em sendo mamífero, ele herda as características dos mamíferos:
mamar, sangue quente, pelos, sexos separados, geram filhotes por inseminação interna e parto normal (exceto o ornitorrinco: um mamífero que bota ovos… enfim…) você já entendeu a ideia geral.

Se você tem um homem, um macaco, um gato ou um cachorro, você vai ter eles herdando todas essas características idênticas. Então se você está modelando um sistema pela abstração de um zoológico, por exemplo, você teria uma superclasse “mamíferos” e você herdaria para as subclasses as características.

Exemplo:

    public void Mamifero() {
            String sangue = "quente";
            boolean pelo = true;
            boolean mamar = true;
            String alimentacao = "carnivoros";
            }

Quanto você for criar a subclasse cachorro, ao invés de declarar tudo isso acima, você só traz por herança, com “extends” (para indicar a superclasse) e a função de importação: “super( )”. Exemplo:

    public void Cachorro() extends Mamifero {
            Cachorro ( ) {
                    super();
                    }
            }

Com isso, o construtor já importa aquelas características acima, e seu cachorrinho já vai ter aqueles atributos de sangue, mamar, não ovos, carnívoro etc.

Agora pense nisso:

    public void Cachorro() extends Carro {
            Cachorro ( ) {
                    super();
                    }
            }

Seu cachorrinho agora, ao invés de sangue e pelos, vai ter rodas, carcaça metálica e um motor!
:slight_smile: :stuck_out_tongue:

Ou seja… utilize a herança só onde tudo for sobre a mesma coisa. Herança serve para reuso de código, para não ter que digitar de novo, o que facilita, entre outros, a manutenção do código principalmente em projetos grandes.

Se ainda tiver dúvidas, por favor pergunte.

Se o assunto fugir do tema deste tópico, crie um novo, para manter as coisas organizadas aqui no fórum.

Bons estudos!

(E quando estiver mais adiantada nos conhecimentos, lembre de ajudar os novatos aqui)
:wink:

1 curtida