É a capacidade de linguagens orientadas a objetos de permitir que
classes herdem estados e comportamentos comuns a outras classes.
A hierarquia de classes em java é uma árvore. Uma classe só pode ter UMA SUPER CLASSE
Todo objeto é do tipo Object! É um tipo coringa!
Obs: Herança é uma associação entre classe (e não entre objetos)
Polimorfismo
Obs: quando eu utilizo a palavrinha abstract eu digo para as subclasses que elas precisam implementar do jeito delas esse método
Ou seja, eu devo obrigatoriamente implementar o método quando for abstract, se não for, eu não preciso! Além disso, a classe é Abstrata! Logo eu não posso instanciar ela!
A anotação Override é opcional, porém fortemente recomendado. Se eu não adicionar nos métodos que eu sobrescrever, o compilador irá gerar um aviso (warning);
Classe abstrata:
É uma forma de garantir herança total: somente subclasses não abstratas podem ser instanciadas, mas nunca a superclasse abstrata.
⭐Diferença entre abstrata e interfaces
Interfaces definem apenas protótipos de método!
Classe abstrata definem implementações (com dados e métodos), vai além do que um simples contrato
Perguntas:
Não pode! Se eu prometi voltar número, então eu devolvo númer!
Agora sim, eu posso devolver número porque NúmeroImaginário é do dipo Número
Herança Múltipla
Eu consigo fazer uma interface herdar interfaces, isso seria herança múltipla!
Há herança simples e herança múltipla
Obs: O animal ali seria animalvertebrado, foi um leve bug
Todo comportamento é sempre o mais específico!
Por via de regra eu devo chamar o construtor da superclasse!
public static void main(String args[]) {
Animal totó = new Cachorro (); // Assim é melhor
Cachorro rex = new Cachorro (12000);
}
HERANÇA E SOBREPOSIÇÃO DE MÉTODOS (METHOD OVERRIDING)
SOBRECARGA DE MÉTODO (METHOD OVERLOADING)
CLASSES E MÉTODOS ABSTRATOS
In Java, an abstract class can have both abstract methods (methods without a body) and non-abstract methods (methods with a body).
abstract class Shape {
// Abstract method
public abstract double area();
// Non-abstract method
public void display() {
System.out.println("This is a shape.");
}
}
In this example, area() is an abstract method because it doesn't have a body, and display() is a non-abstract method because it has a body. Subclasses of Shape would be required to provide an implementation for the abstract area() method but could inherit the display() method as it is.
Example:
Quem define como será o logIn(), sendData() e logOut() serão as classes filhas.
CLASSES ABSTRATAS VS. INTERFACES
Qual usar?
Obs:
In Java, you can check the type of a list by examining the types of its elements. You can do this by iterating over the list and checking each element's type using the instanceof operator.
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Object> myList = new ArrayList<>();
myList.add("Hello");
myList.add(123);
myList.add(3.14);
// Check the type of each element in the list
for (Object element : myList) {
if (element instanceof String) {
System.out.println("String: " + element);
} else if (element instanceof Integer) {
System.out.println("Integer: " + element);
} else if (element instanceof Double) {
System.out.println("Double: " + element);
} else {
System.out.println("Unknown type");
}
}
}
}
Um objeto pode assumir outros tipos, isso é polimorfismo!
📚 Definição
É a capacidade de linguagens orientadas a objetos de permitir que classes herdem estados e comportamentos comuns a outras classes.
A hierarquia de classes em java é uma árvore. Uma classe só pode ter UMA SUPER CLASSE
Todo objeto é do tipo Object! É um tipo coringa!
Obs: Herança é uma associação entre classe (e não entre objetos)
Polimorfismo
Obs: quando eu utilizo a palavrinha
abstract
eu digo para as subclasses que elas precisam implementar do jeito delas esse métodoOu seja, eu devo obrigatoriamente implementar o método quando for abstract, se não for, eu não preciso! Além disso, a classe é Abstrata! Logo eu não posso instanciar ela!
A anotação
Override
é opcional, porém fortemente recomendado. Se eu não adicionar nos métodos que eu sobrescrever, o compilador irá gerar um aviso (warning);Classe abstrata:
⭐Diferença entre abstrata e interfaces Interfaces definem apenas protótipos de método! Classe abstrata definem implementações (com dados e métodos), vai além do que um simples contrato
Perguntas:
Não pode! Se eu prometi voltar número, então eu devolvo númer!
Agora sim, eu posso devolver número porque
NúmeroImaginário
é do dipoNúmero
Herança Múltipla
Eu consigo fazer uma interface herdar interfaces, isso seria herança múltipla!
Há herança simples e herança múltipla
Obs: O animal ali seria animalvertebrado, foi um leve bug
Todo comportamento é sempre o mais específico!
Por via de regra eu devo chamar o construtor da superclasse!
HERANÇA E SOBREPOSIÇÃO DE MÉTODOS (METHOD OVERRIDING)
SOBRECARGA DE MÉTODO (METHOD OVERLOADING)
CLASSES E MÉTODOS ABSTRATOS
In Java, an abstract class can have both abstract methods (methods without a body) and non-abstract methods (methods with a body).
In this example, area() is an abstract method because it doesn't have a body, and display() is a non-abstract method because it has a body. Subclasses of Shape would be required to provide an implementation for the abstract area() method but could inherit the display() method as it is.
Example:
Quem define como será o logIn(), sendData() e logOut() serão as classes filhas.
CLASSES ABSTRATAS VS. INTERFACES
Qual usar?
Obs: In Java, you can check the type of a list by examining the types of its elements. You can do this by iterating over the list and checking each element's type using the instanceof operator.
Um objeto pode assumir outros tipos, isso é polimorfismo!