Acessar uma classe de outra classe

Como acesso as variáveis descricao e preco estando na Classe Caixa em produtos e como as escrevo direto do main?

Vou enviar o código:

import java.util.*;

public class Caixa {
	private int quantProdutos = 0;
	private Venda[] venda;
	private Produto[] produto;
	
	public void Compra(Venda venda) {
	
		this.produto = new Produto[quantProdutos];
		quantProdutos = 0;
			
	}
		
	public void getProduto(Produto produtos) {
	    Produto descricao;			
		getDescricao() = produtos;
		preco[quantProdutos].Produto = preco;
		quantProdutos++;
		
	}
	
	
	void printCompra() {
		for (int i = 0; i < quantProdutos; quantProdutos++) {
			Produto.imprimeProduto(descricao[i], preco[i]);
		}
	}
	

		public double getTotal() {
			double total = 0.0;
			for (int i = 0; i < quantProdutos ; i++) {
				total += venda[i].getTotal();
			}
			return total;
		}
		
}

public class Cliente {
	private String nome;
	private String endereco;
	
	public Cliente(String nome, String endereco) {
		this.nome = nome;
		this.endereco = endereco;
	}
	
	public Cliente(String nome) {
		this.nome = nome;		
	}
	
	public Cliente() {
		
	}
	
	public String getNome() {
		
		return this.nome;
		
	}
	
	public void setNome(String nome) {
		
		this.nome = nome;
	}
	
    public String getEndereco() {
		
		return this.endereco;
		
	}
	
	public void setEndereco(String endereco) {
		
		this.endereco = endereco;
	}
	
	public String imprimeCliente() {		
		return "Cliente: " + this.nome + "\n Endereco: " + this.endereco;
	}
	
}

public class Cliente {
	private String nome;
	private String endereco;
	
	public Cliente(String nome, String endereco) {
		this.nome = nome;
		this.endereco = endereco;
	}
	
	public Cliente(String nome) {
		this.nome = nome;		
	}
	
	public Cliente() {
		
	}
	
	public String getNome() {
		
		return this.nome;
		
	}
	
	public void setNome(String nome) {
		
		this.nome = nome;
	}
	
    public String getEndereco() {
		
		return this.endereco;
		
	}
	
	public void setEndereco(String endereco) {
		
		this.endereco = endereco;
	}
	
	public String imprimeCliente() {		
		return "Cliente: " + this.nome + "\n Endereco: " + this.endereco;
	}
	
}

public class Produto {
	
	private String descricao;						       
	private double preco;
	private int total;
	
		
	public Produto(String descricao, double preco) {		
		this.descricao = descricao;
		this.preco = preco;		
	}
	
	public Produto() {
		
	}
	
	public double getTotal() {		
		return total++;		
	}
	
	public String getDescricao() {
		return descricao;
	}
	
	public double getPreco() {		
		return preco;		
	}
		
	public String imprimeProduto(String descricao, double total) {
		return "Produto: "  + this.descricao + " Total:" + this.total;
	}

}

import java.util.*;

public class Venda {
	int i;
	int numProdutos;
	double total;
	Date data;	
	private Cliente cliente;
	private Produto [] produto;
	
	public Venda() {
	
	}
	        
    public Venda(Date data, Cliente cliente, Produto[] produto) {		
		this.data = data;
    	this.cliente = cliente;
    	this.produto = produto;		
	}
 
	public double getTotal() {
		double total = 0.0;
		for (int i=0; i < numProdutos; i++) {
			total += produto[i].getPreco();
		}
		return total;	
	}
	
	public void adicioneProduto(Produto[] p) {
		produto = p;
		numProdutos++;
	}
	
	public Produto getProduto(int i) {
		return this.getProduto(i);
	}
	
	public int getNumProdutos() {
	    return this.numProdutos;
	}
	
	public String imprimeVenda() {
		return data + " " + cliente + " " + produto; 
	}		
}

Arrays com nome no singular?
Se são arrays, deveriam se chamar vendas e produtos pois são referências a mais de um objeto.

Um parâmetro do tipo Produto chamado produtos?
Se é um parâmetro só, deveria ter um nome no singular: produto.

Um objeto Produto chamado descricao?
Não faz sentido.

Tentando atribuir algo à um método?
Não faz sentido.

Você tem um array chamado preco e na posição quantProdutos você está tentando acessar um atributo Produto e atribuir o próprio array?
Também não faz sentido.

Acredito que você está com duas grandes dificuldades:
A primeira é a sintaxe do Java.
A segunda é a lógica para resolver seu problema.

A impressão que dá é que está simplesmente escrevendo códigos na tentativa e erro sem prestar atenção nas responsabilidades de cada classe.

Dê uma olhada neste post que respondi pra você.

1 curtida