Dúvida na arquitetura de construtores

Senhores sei muitos conceitos básicos do Java como, por exemplo wrapper, Orientação a Objeto, sei que ao usar super(); estamos herdando as características do método construtor da classe PAI, porém me surgiu o seguinte questionamento na minha classe pessoa conforme código abaixo setei para que quando ela fosse instanciada vazia o nome por default seja javan até ai tudo bem, ao criar meu método construtor vazio na classe empregado não usei super(); logo a meu ver o nome NÃO deveria receber por default javan, só que está imprimindo este valor.
Já fiz esse teste, por exemplo, criando um construtor na classe pessoa que recebia só a idade e nele também setava no nome o valor javan, quando construída em empregado sem usar supe (); ele não colocava no nome o valor javan. Quando se trata do construtor vazio em empregado usar super(); ou não, não está fazendo diferença, porque?


//CLASSE MAIN.

package controle;

import entity.Empregado;
import entity.Pessoa;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Empregado e = new Empregado();


	System.out.println("Nome> "+e.getNome());
	
	
	}

}


//CLASSE PESSOA



package entity;

public class Pessoa {

	private String nome;
	private Integer idade;
	
	
	public Pessoa() {
		super();
		this.nome = "Javan"; //COLOCANDO UM VALOR DEFAULT EM NONE.
	}
	
	public Pessoa(Integer idade) {
		super();
		//this.nome = "Javan";
	}

	
	public Pessoa(String nome,Integer idade) {
		super();
		this.nome = nome;
		this.idade = idade;
	}


	public String getNome() {
		return nome;
	}


	public void setNome(String nome) {
		this.nome = nome;
	}


	public Integer getIdade() {
		return idade;
	}


	public void setIdade(Integer idade) {
		this.idade = idade;
	}

	
	
}



//CLASSE EMPREGADO QUE HERDA DE PESSOA.

package entity;

public class Empregado extends Pessoa{
	private String cargo;
	 
	

	public Empregado() {
	//super ();
	}
	
	public Empregado(Integer idade) {
		super (idade);
		}
	

	public Empregado(String nome, Integer idade,String cargo) {
		super(nome,idade);
		this.cargo = cargo;
	}



	public void setCargo(String cargo) {
		this.cargo = cargo;
	}

	public String getCargo() {
		return cargo;
	}


}


Cara o construtor da classe pai sempre é chamado. Em seu código vc instância Empregado() que é o default. O método super() sempre é chamado pelo compilador!

De uma lida nesse artigo sobre construtores em Java: http://wp.me/p1iE6J-q . Será útil para você que está interessado no assunto.

Romarcio quando você disse: " O método super() sempre é chamado pelo compilador" se eu não colocar nada dentro do método construtor seja ele com parâmetros ou não, o compilador chama o super() por default, muito obrigado pela ajuda acabei de validar isto. É muito importante entender exatamente como as coisas funcionam para não virar um usuário de POG :smiley:
FabioEM o artigo é excelente e muito didático.