Interface é filha de Object tb? :idea:
:?:
Interface é filha de Object tb?
11 Respostas
Pq vc não faz um teste?
Cria uma interface:public interface InterTeste {
}
static InterTeste aa;
public static void main(String[] args) {
System.out.println(aa instanceof Object);
}
No contexto acima:
static InterTeste aa;
System.out.println(aa instanceof Object);
É a mesma coisa que:
static InterTeste aa;
System.out.println(null instanceof Object);
É isso que o instanceof está verificando…
Lembre-se disso meu jovem:
“Interfaces só herdam de Interfaces”
Abs.
Olá!
Eu entendo que o objeto possui uma interface. Quando esta interface é implementada, ai sim ela É-UM objeto.
Perceba que não faz muito sentido usar os termos “filha” ou “filho”. Um Carro É-UM Automovel faz mais sentido do que dizer que Um Carro é Filho de Automovel. O termo “filho” é mais usado em banco de dados onde temos tabelas filhas.
Para ilustrar o que penso, fiz o seguinte teste:
public interface Interface {
}
class Main
{
public static void main(String [] args)
{
//Aqui, a interface está sendo implementada
Interface i = new Interface() {};
System.out.print(i instanceof Object);
}
}
abraço
Olá!Eu entendo que o objeto possui uma interface. Quando esta interface é implementada, ai sim ela É-UM objeto.
Perceba que não faz muito sentido usar os termos “filha” ou “filho”. Um Carro É-UM Automovel faz mais sentido do que dizer que Um Carro é Filho de Automovel. O termo “filho” é mais usado em banco de dados onde temos tabelas filhas.Para ilustrar o que penso, fiz o seguinte teste:
public interface Interface { } class Main { public static void main(String [] args) { //Aqui, a interface está sendo implementada Interface i = new Interface() {}; System.out.print(i instanceof Object); } }abraço
O teste não faz sentido. Você está testando se uma classe anônima, que implementa Inteface, é instância de Object. Claro que sim. Porém, isso não responde a pergunta do tópico: a de que Interface é filha de Object.
[quote=Leonardo3001]
O teste não faz sentido. Você está testando se uma classe anônima, que implementa Inteface, é instância de Object. Claro que sim. Porém, isso não responde a pergunta do tópico: a de que Interface é filha de Object.
Como eu disse, eu entendo que o Objeto possui uma interface, ou seja, a Interface não é um objeto até ela ser implementada! Até por que, para ser objeto, tem que herdar de Object, e Interfaces só podem herdar de outra Interface.
Ou estou errado?
Como eu disse, eu entendo que o Objeto possui uma interface, ou seja, a Interface não é um objeto até ela ser implementada! Até por que, para ser objeto, tem que herdar de Object, e Interfaces só podem herdar de outra Interface.Ou estou errado?
Você confunde implementação com instância. Interface é implementada, mas nunca instanciada; então, uma interface não pode se tornar um objeto, no máximo, posso usá-la como uma referência para um objeto.
Interfaces podem herdar de outra interface, ou pode não herdar de ninguém. Só não podem herdar de classes.
Esse tipo de conceito confunde mesmo… pra tentar exemplificar, imagine um carro, uma moto, um caminhão… todos eles são (implementam) o quê? Veículos… eles “implementam” a interface Veiculo…
E um veículo nunca é um “objeto” própriamente dito, é algo abstrato, são “regras” que definem qual o “tipo” que o objeto é… você consegue ir numa concessionária e pedir: “quero comprar um veículo, por favor” ?
Você tem que “instanciar” a sua escolha… um veículo? Ok, mas é uma moto, um caminhão, um carro… o quê você quer?
Ou seja, uma interface nunca será um Object, não há instancias de interfaces, apenas dos objetos que as implementam…
pensando na semantica, toda classe, interface e classe abstrata pode ser sim atribuida a Object, tanto que voce pode fazer Object o = qualquerReferencia;
a discussao que o pessoal esta fazendo é como essa frase deve ser formulada. dizer que é “filha” talvez seja um pouco demais.
mas seu raciocinio esta certo.
Você pode fazer um teste com o java
Crie uma classe e uma interface, coloque as duas numa pasta, pela linha de comando, vc compila elas e usa o comando javap em cada uma
Obs: sem o .class
Com isso a resposta aparece
Como eu disse, eu entendo que o Objeto possui uma interface, ou seja, a Interface não é um objeto até ela ser implementada! Até por que, para ser objeto, tem que herdar de Object, e Interfaces só podem herdar de outra Interface.Ou estou errado?
Você confunde implementação com instância. Interface é implementada, mas nunca instanciada; então, uma interface não pode se tornar um objeto, no máximo, posso usá-la como uma referência para um objeto.
Interfaces podem herdar de outra interface, ou pode não herdar de ninguém. Só não podem herdar de classes.
Não cara. Não confundo. Acho que você não entendeu o que eu disse. Mas acho que a dúvida já foi respondida!
:lol:
Interfaces e classes são “contratos” porém apenas classes herdam a classe Object.
Eu entendo que o objeto possui uma interface. Quando esta interface é implementada, ai sim ela É-UM objeto.
Perceba que não faz muito sentido usar os termos “filha” ou “filho”. Um Carro É-UM Automovel faz mais sentido do que dizer que Um Carro é Filho de Automovel. O termo “filho” é mais usado em banco de dados onde temos tabelas filhas.
Quando uma interface é implementada, você TÊM uma classe que segue o contrato da interface e, ao instanciá-la, aí sim, terá um objeto.
Não é só por ter implementado a interface que vc possui um objeto. Se o mesmo não for instanciado (através do operador new), o mesmo continuará sendo apenas uma classe.
Exemplo:
interface Veiculo {}
interface AutoMotor{}
class Carro implements Veiculo, AutoMotor {}
class Carroca implments Veiculo {}
Carro É-UM Object, Veiculo e AutoMotor
Carroca É-UM Object e Veiculo
Entretanto,
interface Motor {}
class MotorQuatroTempos implements Motor {}
class Carro implements Veiculo, AutoMotor {
Motor motorQuatroTempos = new MotorQuatroTempos();
}
Carro É-UM Object, Veiculo e AutoMotor E POSSUI um Motor.
Neste último exemplo, os objetos Carro e Motor só existirão quando