Eu estou fazendo um curso de android, mas eu aprendi java separadamente, no curso em vídeo. E lá, o professor disse que quando digitamos “new”, estamos declarando um objeto. Ele disse que existem variáveis de tipo abstrato, como “String”, etc… e primitivo como “int” no java. Até aí blz. Mas no curso de android, o cara declara uma variável com tipo “Button”, etc, para armazenar o botão do xml, e fala que está instanciando um objeto. Não só ele, mas um tanto de gente fala isso. O que de fato é um objeto no JAVA? E se aquilo de fato for um objeto, qual é a diferença de um como uma variável, e um objeto com o “new”?
Objeto em java são apenas quando usamos "new" ou quando declaramos uma variável de tipo abstrato, isso também é considerado um objeto?
10 Respostas
Objeto é uma instância de uma classe.
Uma analogia mais ou menos seria:
- Classe: imagine como um molde
- Instância: As criações feitas a partir do molde
Classe Pessoa
public class Pessoa {
String nome;
public Pessoa(String nome) {
this.nome = nome;
}
}
Criando instâncias à partir da classe:
Pessoa fulano = new Pessoa("Fulano");
Pessoa ciclano = new Pessoa("Ciclano");
Nesse exemplo, criamos duas instâncias da classe Pessoa, que representa duas pessoas ficticias com os nomes “Fulano” e “Ciclano”.
Mas então se eu fizer: Pessoa p; Isso é um objeto ou uma variável de tipo abstrato?
Isso é uma declaração de variável que irá receber uma instância de objeto. A partir de uma classe, vc cria uma instância de objeto, pois uma classe pode representar um objeto do mundo real.
Esse termo “variável de tipo abstrato” não é valido. Você pode criar classes e métodos abstratos apenas.
Um exemplo de abstração seria “Animal”. Animal seria a abstração de cachorro, por exemplo. Transformando ess ideia em código, ficaria assim:
public abstract class Animal {
// propriedades e métodos (ações e caracteristicas) de um animal
}
public class Cachorro extends Animal {
// propriedades e métodos (ações e caracteristicas) de um cachorro
}
Entendi, mas então, existe diferença entre variável e objetos no java? Se eu não implementar, eu não posso dizer que é um objeto, e sim, apenas uma variável, com o tipo sendo uma classe?
Vc tem Objetos e tipos primitivos.
Aproveitando que você já está aqui kkk, como é possível o cara criar uma variável e instanciar um objeto com outra classe? Tipo, "Animation aparece = new AlphaAnimation(0,1);
Qual é a organização disso? O que a classe “AlphaAnimation” tem em comum com a “Animation”?
Essa linha indica que AlphaAnimation É UM tipo de Animation.
A relação É UM indica uma herança de ações e comportamentos. É como o exemplo do animal: Cachorro é um Animal. Com isso, o cachorro irá herdar as ações e caracteristicas de animal.
Vlw, muito obrigado por me ajudar, eu realmente não estava lembrando
Uma variável é um lugar na memoria onde você pode armazenar algum valor.
A variável é como se fosse uma caixa de sapato, e seu objeto é o sapato. Você pode guardar o sapato ali dentro, mas a caixa e os sapatos são coisas diferentes. E você até pode tirar o sapato dali e colocar em outra caixa, ou colocar um outro sapato diferente na mesma caixa. As variáveis são isso, lugares onde você armazena coisas.
No caso do Java quando você declara uma variável Animation aparece, você esta dizendo que quer que a linguagem reserve um espaço no memória para armazenar como valor uma referência a uma instância/objeto do tipo Animation.
No Java existe uma nuance onde tipos “primitivos” tem seu valor armazenado diretamente no lugar reservado pela variável. Já tipos por referência possuem somente um valor que diz onde a instância em si se encontra na memória, esse tipo de valor é chamado de ponteiro/apontador ou referência.
Interessante