Bom dia Wagner, tudo bem ?
Então cara, analisando seu código verifiquei algumas falhas, fiz alguns ajustes e testei. Você estava usando a classe funcionário como estática, o nome da classe funcionário você deixou como "Ex9", então quando você for instanciar um objeto dessa classe, terá que usar esse nome. Bom abaixo segue o código, caso fique alguma duvida, basta deixar o comentário que eu explico com mais detalhes.
Classe Data:
package Orientacao_Objeto;
public class Data {
int dia;
int mes;
int ano;
public void preencheData(int _dia, int _mes, int _ano) {
dia = _dia;
mes = _mes;
ano = _ano;
}
String getFormatada() {
return dia + "/" + mes + "/" + ano;
}
}
Classe Funcionário (que no caso, você deu o nome de Ex9):
package Orientacao_Objeto;
class Funcionario {
String nome;
String departamento;
double salario;
Data dataDeEntrada;
String RG;
void recebeAumento (double aumento){
salario += aumento;
}
double calculaGanhoAnual() {
return salario * 12;
}
void mostra (){
System.out.println("Data de entrada: " + dataDeEntrada.getFormatada());
}
}
Classe Main (teste):
package Orientacao_Objeto;
class main {
public static void main(String[] args) {
Funcionario robson = new Funcionario();
robson.nome = "Robson Nunes";
robson.salario = 1800;
robson.dataDeEntrada = new Data();
robson.dataDeEntrada.preencheData(28, 10, 1999);
System.out.println(robson.dataDeEntrada);
//Esse System.out.print vai imprimir a referencia da memoria, caso queira imprimir a data mesmo, basta colocar "robson.dataDeEntrada.ano" e assim por diante, ou sobrescrever o toString.
}
}
Um abraço, espero ter ajudado. Fico a disposição :) .