Sobrescrita / method overriding = ocorre quando uma subclasse fornece sua própria implementação de um método que já está definido em sua superclasse
mesma assinatura, classes diferentes
a sobrescrita permite que a subclasse altere ou estenda o comportamento de um método herdado, oferecendo uma implementação específica para o contexto da subclasse
quando uma subclasse deseja alterar o comportamento de um método da superclasse, ela sobrescreve o método
isso significa que o método na subclasse terá o mesmo nome, tipo de retorno e parâmetros do método na superclasse
A sobrescrita é usada para fornecer implementações específicas de métodos, de forma que a subclasse possa alterar ou estender o comportamento herdado
// superclassepublicclassAnimal{publicvoidfazerSom(){System.out.println("Som genérico de animal");}}// subclasse// subclasse `Cachorro` sobrescreve o método `fazerSom()` da superclasse `Animal` para fornecer uma implementação específica para cachorrospublicclassCachorroextendsAnimal{@OverridepublicvoidfazerSom(){System.out.println("Latido");}}
palavra-chave super = utilizada para referenciar membros (métodos ou atributos) da superclasse, dentro de um método sobrescrito ou de um construtor da subclasse
usando super em métodos = pode-se chamar um método da superclasse dentro do método sobrescrito da subclasse
publicclassAnimal{publicvoidfazerSom(){System.out.println("Som genérico de animal");}}// fazerSom() de Cachorro chama o fazerSom() de Animal// só depois adiciona um comportamento específicopublicclassCachorroextendsAnimal{@OverridepublicvoidfazerSom(){super.fazerSom();// chama o método da superclasseSystem.out.println("Latido");// comportamento específico}}
A sobrescrita de métodos ocorre quando uma classe filha redefine um método da classe pai com a mesma assinatura, ou seja, o mesmo nome e os mesmos parâmetros.
A anotação @Override é obrigatória, mas ela não tem efeito prático na compilação. Ela apenas serve para indicar a intenção do programador.
A sobrescrita de métodos é uma forma de polimorfismo dinâmico, pois o método da classe pai que será executado é escolhido em tempo de execução, dependendo do tipo real do objeto.
Em Java, é possível sobrescrever um método da classe pai mesmo se ele for private.
Quando um método é sobrescrito, ele deve ter o mesmo tipo de retorno que o método da classe pai.
A palavra-chave super pode ser usada para acessar um método sobrescrito da classe pai.
Em Java, a sobrescrita de métodos pode ser feita com diferentes listas de parâmetros, mas o nome do método deve ser o mesmo.
A anotação @Override pode ser usada apenas quando um método está sendo sobrescrito da classe pai.
A sobrescrita de um método não altera a implementação da classe pai; ela substitui o método da classe pai na classe filha.
É possível sobrescrever um método da classe pai e manter a visibilidade private na classe filha.
Se um método da classe pai é sobrescrito, o método original da classe pai deixa de ser acessível diretamente pela classe filha.
A sobrescrita de métodos permite que a classe filha forneça uma implementação específica para um comportamento definido na classe pai.
É possível sobrescrever um método da classe pai se o método da classe pai for final.
A anotação @Override é usada para indicar que um método na classe filha está sobrescrevendo um método da classe pai.
A sobrescrita de métodos é usada principalmente quando se deseja que a classe filha herde o comportamento da classe pai sem alterá-lo.
Verdadeiro: a sobrescrita de métodos ocorre quando uma classe filha redefine um método da classe pai com a mesma assinatura (nome e parâmetros). Isso é feito para modificar ou especificar a implementação do comportamento da classe pai.
Falso: a anotação @Override não é obrigatória, mas ela é fortemente recomendada. Ela ajuda o compilador a verificar se o método da classe filha está realmente sobrescrevendo o método da classe pai, evitando erros caso a assinatura do método não corresponda.
Verdadeiro: a sobrescrita é uma forma de polimorfismo dinâmico, porque o método a ser executado é escolhido em tempo de execução, com base no tipo real do objeto, e não no tipo da variável.
Falso: não é possível sobrescrever um método private, pois ele é inacessível fora da classe onde foi declarado. Métodos private não podem ser sobrescritos pelas subclasses.
Verdadeiro: o tipo de retorno do método sobrescrito deve ser o mesmo ou ser um subtipo do tipo de retorno do método da classe pai, como parte das regras de sobrescrita de métodos.
Verdadeiro: a palavra-chave super pode ser usada para acessar métodos da classe pai, incluindo aqueles que foram sobrescritos pela classe filha, caso seja necessário usar a implementação original.
Falso: a sobrescrita de métodos deve manter a mesma assinatura de método (nome e parâmetros). A lista de parâmetros não pode ser alterada, caso contrário, seria uma sobrecarga, não uma sobrescrita.
Verdadeiro: a anotação @Override é usada para indicar explicitamente que um método está sobrescrevendo um método da classe pai. Isso facilita a leitura e evita erros.
Verdadeiro: a sobrescrita de um método substitui a implementação da classe pai pela nova implementação na classe filha. A implementação original da classe pai não é mais utilizada, a não ser que seja explicitamente chamada com super.
Falso: se o método da classe pai for private, ele não pode ser sobrescrito pela classe filha, pois não é acessível para a classe filha.
Falso: o método original da classe pai ainda pode ser acessado diretamente pela classe filha, mas, quando um método é sobrescrito, a versão sobrescrita será chamada quando o método for invocado.
Verdadeiro: a sobrescrita de métodos permite que a classe filha forneça uma implementação específica para um comportamento já definido na classe pai. Isso permite que a classe filha altere ou estenda o comportamento herdado.
Falso: um método final não pode ser sobrescrito, pois o modificador final impede que o método seja alterado pelas subclasses.
Verdadeiro: a anotação @Override é usada para indicar que um método na classe filha está sobrescrevendo um método da classe pai, garantindo que a sobrescrita está sendo feita corretamente.
Falso: a sobrescrita de métodos é usada quando se deseja que a classe filha modifique ou especifique um comportamento da classe pai. Se não for necessário alterar o comportamento, a classe filha pode simplesmente herdar o método da classe pai.