A palavra-chave extends em Java é usada para indicar que uma classe está herdando de uma superclasse. Esse é um aspecto fundamental da programação orientada a objetos em Java, permitindo que uma nova classe herde campos e métodos de uma classe existente.
Uso
A palavra-chave extends é usada em declarações de classe para estabelecer uma relação de herança entre duas classes.
Sintaxe
classSubclassNameextendsSuperclassName{// class body}Tecnologia
SubclassName: O nome da nova classe que você está herdando.
SuperclassName: O nome da classe existente da qual você está herdando.
Exemplos
Exemplo 1: Herança básica
classAnimal{voideat(){
System.out.println("This animal eats food.");}}classDogextendsAnimal{voidbark(){
System.out.println("The dog barks.");}}publicclassMain{publicstaticvoidmain(String[] args){
Dog dog =newDog();
dog.eat();// Inherited method
dog.bark();// Method of Dog class}}Tecnologia
Neste exemplo, a classe Dog estende a classe Animal, herdando seu método eat. A classe Dog também tem seu próprio método bark. Quando uma instância de Dog é criada, tanto o método herdado eat quanto o método bark podem ser chamados.
Exemplo 2: Substituição de métodos
classAnimal{voidsound(){
System.out.println("This animal makes a sound.");}}classCatextendsAnimal{
@Override
voidsound(){
System.out.println("The cat meows.");}}publicclassMain{publicstaticvoidmain(String[] args){
Cat cat =newCat();
cat.sound();// Overridden method}}Tecnologia
Aqui, a classe Cat estende a classe Animal e substitui o método sound para fornecer sua própria implementação. A anotação @Override é usada para indicar que o método está sendo substituído.
Neste exemplo, a classe Employee estende a classe Person e herda o campo name. A classe Employee também tem seu próprio campo employeeId.
Dicas e práticas recomendadas
Use a herança de forma criteriosa: A herança deve ser usada quando houver uma relação clara de "é uma" entre a subclasse e a superclasse.
Substituir métodos adequadamente: Use a anotação @Override ao substituir métodos para garantir que você esteja substituindo corretamente um método da superclasse.
Evite hierarquias de herança profunda: Hierarquias de herança profundas podem dificultar a compreensão e a manutenção do código. Prefira a composição à herança quando for apropriado.
Acesso aos métodos da superclasse: Use super para chamar métodos da superclasse a partir da subclasse, se necessário.
classAnimal{voideat(){
System.out.println("This animal eats food.");}}classDogextendsAnimal{voideat(){super.eat();// Call superclass method
System.out.println("The dog eats dog food.");}}Tecnologia
Encadeamento de construtores: Use super() para chamar o construtor da superclasse a partir do construtor da subclasse.
classPerson{Person(String name){
System.out.println("Person's name is "+ name);}}classEmployeeextendsPerson{Employee(String name, int employeeId){super(name);// Call superclass constructor
System.out.println("Employee ID is "+ employeeId);}}Tecnologia
Entendendo a herança
A herança é um conceito fundamental na programação orientada a objetos (OOP) que estabelece uma relação entre uma superclasse mais geral e uma subclasse mais específica. Essa relação permite que a subclasse herde atributos e métodos da superclasse, promovendo a reutilização do código e a estruturação lógica.
Relacionamento Is-A: A palavra-chave extends significa uma relação "is-a". Por exemplo, um Dog é um Animal, e um Employee é um Person.
Herança única: O Java oferece suporte à herança única, o que significa que uma classe só pode estender uma outra classe para evitar ambiguidade e complexidade.
Combinação de extensões e suplementos: Uma classe pode estender outra classe e implementar várias interfaces simultaneamente. Essa combinação permite que uma classe herde de uma superclasse e adira a vários contratos definidos por interfaces.
classAnimal{voidmove(){
System.out.println("This animal moves.");}}interfacePet{voidplay();}classDogextendsAnimalimplementsPet{voidbark(){
System.out.println("The dog barks.");}publicvoidplay(){
System.out.println("The dog plays.");}}publicclassMain{publicstaticvoidmain(String[] args){
Dog dog =newDog();
dog.move();// Inherited method from Animal
dog.bark();// Method of Dog class
dog.play();// Implemented method from Pet interface}}Tecnologia
Neste exemplo, a classe Dog estende a classe Animal e implementa a interface Pet, demonstrando a combinação de herança e implementação de interface.
A palavra-chave
extendsem Java é usada para indicar que uma classe está herdando de uma superclasse. Esse é um aspecto fundamental da programação orientada a objetos em Java, permitindo que uma nova classe herde campos e métodos de uma classe existente.Uso
A palavra-chave
extendsé usada em declarações de classe para estabelecer uma relação de herança entre duas classes.Sintaxe
SubclassName: O nome da nova classe que você está herdando.SuperclassName: O nome da classe existente da qual você está herdando.Exemplos
Exemplo 1: Herança básica
Neste exemplo, a classe
Dogestende a classeAnimal, herdando seu métodoeat. A classeDogtambém tem seu próprio métodobark. Quando uma instância deDogé criada, tanto o método herdadoeatquanto o métodobarkpodem ser chamados.Exemplo 2: Substituição de métodos
Aqui, a classe
Catestende a classeAnimale substitui o métodosoundpara fornecer sua própria implementação. A anotação@Overrideé usada para indicar que o método está sendo substituído.Exemplo 3: Herdando campos
Neste exemplo, a classe
Employeeestende a classePersone herda o camponame. A classeEmployeetambém tem seu próprio campoemployeeId.Dicas e práticas recomendadas
@Overrideao substituir métodos para garantir que você esteja substituindo corretamente um método da superclasse.superpara chamar métodos da superclasse a partir da subclasse, se necessário.super()para chamar o construtor da superclasse a partir do construtor da subclasse.Entendendo a herança
A herança é um conceito fundamental na programação orientada a objetos (OOP) que estabelece uma relação entre uma superclasse mais geral e uma subclasse mais específica. Essa relação permite que a subclasse herde atributos e métodos da superclasse, promovendo a reutilização do código e a estruturação lógica.
extendssignifica uma relação "is-a". Por exemplo, umDogé umAnimal, e umEmployeeé umPerson.Neste exemplo, a classe
Dogestende a classeAnimale implementa a interfacePet, demonstrando a combinação de herança e implementação de interface.