Uma classe acessar a outra, dúvidas?

Olá a todos, segue o código abaixo:

package aspirador;

public class Main {
        
    public static void main(String[] args) {        
        
        Aspirador aspirador = new Aspirador();
        
        //Ambiente ambiente = new Ambiente();
    }       
}

package aspirador;

import java.util.Random;

public class Aspirador extends Ambiente {   

    public Aspirador() {         
        carregoPosicao();
    }  
    
    /*
     * Carrega posição para saber a onde o aspirador está
     */
    private void carregoPosicao() {
        
        x = getX(); // posição linha
        y = getY(); // posição coluna
        
        //System.out.println("Aspirador X " + x);
        //System.out.println("Aspirador Y " + y);
        
        aspirando();
    }      

    private void aspirando() {
        
        /*
         * Aspiro a linha que o aspirador está, então eu não mexo na linha, mas
         * sim na coluna.
         */
        
        // esse for chega até um extremo da linha
        for (y = getY(); y < getN(); y--) {
            
            // 0 --> ambiente limpo e sem mobilhas
            if (getQuadrado()[getX()][getY()] == 0) { 
                
                getQuadrado()[getX()][getY()] = 4;
                
                exibeAmbiente();
            }            
        }                
    }     
    
    private int x, y, i, j, status;    
    
}
package aspirador;

import java.util.Random;

public class Ambiente {    
    
    Random randNumeros = new Random(); // gerador de números aleatórios           
    
    public Ambiente() {      
            
        setN(4);        
        setQuadrado(new int[getN()][getN()]); // ambiente de n x n                
        iniAmbiente();             
        
    }
    
    /*
     * 0 --> ambiente limpo e sem mobilhas
     * 1 --> ambiente sujo e sem mobilhas
     * 2 --> ambiente sujo com mobilhas
     * 3 --> ambeinte limpo com mobilhas
     */
    
    private void iniAmbiente() {       
        
        setAspirador(false); // aspirador ainda não está no ambiente
        
        for(setI(0); getI()<getN(); setI(getI() + 1)) {
            for (setJ(0); getJ()<getN(); setJ(getJ() + 1)) {
                // seleciona inteiro entre 0 e 3
                getQuadrado()[getI()][getJ()] = 0 + randNumeros.nextInt(3);
            }
        }
        
        exibeAmbiente();
        iniAspirador();
        exibeAmbiente();        
    }    
    
    /*
     * Exibe o ambiente sem o aspirador
     */
    
    private void exibeAmbiente() {
        
        // aspirador não está no ambiente ainda    
        if(isAspirador()==false) {
            
            System.out.println("Inicializando Ambiente .....");
            System.out.printf("\n");
            
            for(setI(0); getI()<getN(); setI(getI() + 1)) {
                for (setJ(0); getJ()<getN(); setJ(getJ() + 1)) {
                    System.out.printf("%2d",getQuadrado()[getI()][getJ()]);
                }
                System.out.printf("\n");
            }            
        }
        else {
            
            System.out.printf("\n");
            System.out.println("Iniciando Aspirador .....");
            System.out.printf("\n");
            
            for(setI(0); getI()<getN(); setI(getI() + 1)) {
                for (setJ(0); getJ()<getN(); setJ(getJ() + 1)) {
                    System.out.printf("%2d",getQuadrado()[getI()][getJ()]);
                }
                System.out.printf("\n");
            }
            
            System.out.printf("\n");
            System.out.println("Linha: " + getX());
            System.out.println("Coluna: " + getY());            
            System.out.printf("\n");
        }
    }    
    
    /*
     * Inicializa a posição inicial do aspirador de forma aleatória
     * 4 --> aspirador
     */
    
    private void iniAspirador() {
        
        setX(0 + randNumeros.nextInt(getN())); // linha inicial do aspirador
        setY(0 + randNumeros.nextInt(getN())); // coluna inicial do aspirador
        
        //System.out.println("Linha: " + getX());
        //System.out.println("Coluna: " + getY());
        
        getQuadrado()[getX()][getY()] = 4;        
        
        setAspirador(true); // aspirador está no ambiente
    }
    

    public int getN() {
        return n;
    }

    public void setN(int n) {
        this.n = n;
    }

    public int getI() {
        return i;
    }

    public void setI(int i) {
        this.i = i;
    }

    public int getJ() {
        return j;
    }

    public void setJ(int j) {
        this.j = j;
    }

    public int[][] getQuadrado() {
        return quadrado;
    }

    public void setQuadrado(int[][] quadrado) {
        this.quadrado = quadrado;
    }          

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }    

    public boolean isAspirador() {
        return aspirador;
    }

    public void setAspirador(boolean aspirador) {
        this.aspirador = aspirador;
    }    
    
    private int n,i,j, x, y;
    private int[][] quadrado;    
    private boolean aspirador;
    
}

A minha dúvida é o seguinte, como eu faço através da classe Aspirador acessar o método exibeAmbiente() que está na classe Ambiente?

Ola

Bom, como o modificador do método está private não tem como ser direto, mas se vc passar o modificador para protected, por exemplo, vc consegue invocar o metodo diretamente, com um this.exibeAmbiente(), por exemplo.