Interface é filha de Object tb?

11 respostas
A

Interface é filha de Object tb? :idea: :smiley: :?:

11 Respostas

Hebert_Coelho

Pq vc não faz um teste?

Cria uma interface:
public interface InterTeste {

}
Depois cria uma classe que contenha um públic void main e a interface:
static InterTeste aa;
	public static void main(String[] args) {
		
		System.out.println(aa instanceof Object);
	}
Veja que ela não está instanciada em ainda. Interface é um "contrato" que um uma classe (Object) deve seguir.
G

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.

Marck

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

L

Marck:
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.

Marck

[quote=Leonardo3001]

Marck:

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?

L

Marck:
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.

marcelo.bellissimo

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…

Paulo_Silveira

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.

zoren

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

Marck

Leonardo3001:
Marck:
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:

WellingtonRamos

Interfaces e classes são “contratos” porém apenas classes herdam a classe Object.

Marck:
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

Criado 31 de agosto de 2010
Ultima resposta 31 de ago. de 2010
Respostas 11
Participantes 9