Menu e sobrecarga de metodos redefinicao

Ola pessoal eu sou iniciante em java meu professor passou um trabalho que eu teria que fazer um sistema de saude, com 5 classes e metodo main( que eu ja fiz), uma sobrecaraga de metodos um menu que chame as classes, e uma tal de redefinicao! so que ele nunca deu uma aula sobre esses assuntos pediu que pesquisassemos, alguem poderia me da uma AJUDINHA de com eu faco esse menu e essa tal de redefinacao? PORque EU NAO SEI NEM PRA OND E QUE VAI! por favor alguem pode me dar um toque? desde ja obrigado
1ª public class Individuo {
private String nome;
private int cpf;
private String endereço;

public Individuo(String nome, int cpf, String endereço){
this.nome = nome;
this.cpf = cpf;
this.endereço = endereço;
}

public int getCpf() {
return cpf;
}

public String getEndereço() {
return endereço;
}

public String getNome() {
return nome;
}
}

2
public class Espec{

private String nome;
private Medico[] medicos = new Medico[10];

public void Credencia(String nome){

}

public String getNome() {
return nome;
}
}

3
public class Medico extends Individuo{
private int cod;
private String especialidade;
public Medico(String nome,int cpf, String endereço,int cod, String especialidade){
super(nome,cpf,endereço);
this.cod = cod;
this.especialidade = especialidade;

}
public int getCod() {
return cod;
}
public String getEspecialidade() {
return especialidade;
}

}
4
public class Plano {
private String nome;
private float valor;
private Espec especs[];
private String Texto;
private int tamanho;

public Plano(String nome){
this.nome = nome;

if (this.nome == “completo” ){
especs = new Espec[10];
tamanho = 10;
for (int i = 0; i <= tamanho -1;i++ ){
especs[i] = new Espec();
}

}

if (this.nome == “parcial”){
especs = new Espec[7];
tamanho = 7;
for (int i = 0; i <= tamanho -1;i++ ){
especs[i] = new Espec();
}
}

if (this.nome == “basico”){
especs = new Espec[4];
tamanho = 4;
for (int i = 0; i <= tamanho -1;i++ ){
especs[i] = new Espec();
}
}
}
public String getNome() {
return nome;
}

public float getValor() {
return valor;
}

public void RetEspeci(){
String texto = “”;
int i = 0;
while ((i <= tamanho - 1) && (especs[i] != null)){
texto += " \n" +especs[i];
}

}
public String getTexto() {
return Texto;
}

}
5import java.util.*;
public class SysPlano {

public static void main(String[] args){ //metodo main
System.out.println("******SysPlano");
System.out.println(“Sistema Plano de Saúde”);
System.out.println("\n");
System.out.println(" Menu “);
System.out.println(” 1. Especialidades “);
System.out.println(” 2. Medicos “);
System.out.println(” 3. Planos “);
System.out.println(” 4. Sair ");