Problemas com instancia de classe

1 resposta
M

eu nao entendi porque esse código funciona

class Base {
}

public class Teste extends Base {
	public static void main(String args[]) {
		Base b = new Teste();
	}
}

esse aqui nao compila

class Base {
}

public class Teste extends Base {
	public static void main(String args[]) {
		Teste t = new Base();
	}
}

alguem poderia explicar fazendo favor??

obrigado

1 Resposta

Rafael_Steil

Base eh a super classe de Teste. Como Teste É uma Base, logo Base pode conter Teste. Porem, o contrario ja nao eh valido. De uma maneira simples, veja por esse lado:

Como Teste estende Base, logo Teste tem acesso a todos os membros e metodos nao-private de Base. Porem, Teste ainda pode ter seus proprios membros e metodos, soh dela, os quais Base nem sabe que existe. O codigo

Teste t = new Base();

nao funciona pelo fato de que “t” conteria uma referencia para um objeto do tipo Base, mas no fundo eh um Teste. Com isso, a chamada a algum metodo existente somente em Teste nao funcionaria, pois a referencia aponta para Base.

Rafael

Criado 9 de junho de 2003
Ultima resposta 10 de jun. de 2003
Respostas 1
Participantes 2