Acessando atributo de superclasse

cara,

vc so tem fazer isso,

public static void main(String[] args){
		Ouro ouro = new Ouro();
		ouro.inputDados();
		ouro.mostrarDados();
	}

PS: vc vai ter que dar uma melhorada no seu codigo

t+

e mais uma coisa, para vc ter polimorfismo, vc vai ter que ter uma implementação do metodo no pai e filhos sobrescreverem ou vc ter a assinatura de um metodo como abstract na classe Pai para que os filhos implemente.

[quote=alissonvla]cara,

vc so tem fazer isso,

public static void main(String[] args){
		Ouro ouro = new Ouro();
		ouro.inputDados();
		ouro.mostrarDados();
	}

PS: vc vai ter que dar uma melhorada no seu codigo

t+[/quote]

Eu fiz isso, e o ouro.inputDados(); e o ouro.mostrarDados();
eu coloquei dentro de um if (que serve pra pessoa selecionar o plano), segue a classe main:

import java.awt.event.*;
import java.util.Scanner;


public class Consultorio {
	public static void main (String args[]){

		int opcaoPlano; //Opção do plano
		int contouro=0;
		int contprata=0;
		int contdiamante=0;
		
                                Cliente cl = new Cliente();
		Ouro ouro = new Ouro();
		Prata prata = new Prata();
		Diamante diamante = new Diamante();

		Scanner input = new Scanner (System.in);
		System.out.println ("Bem vindo ao consultorio, favor informar o plano: ");
		System.out.println ("1 - Ouro			2 - Prata			3 - Diamante		0 - Sair");
		opcaoPlano = input.nextInt();
		while (opcaoPlano <0 || opcaoPlano >4){
		System.out.println ("Opção inválida, digite novamente a opção desejada: ");
		System.out.println ("1 - Ouro			2 - Prata			3 - Diamante		0 - Sair");
		opcaoPlano = input.nextInt();
	}

	while (opcaoPlano != 0){

		if (opcaoPlano == 1){
		cl.inputDados();
		ouro.valorTotal();
		ouro.mostrarDados();
		contouro+=1;
		}
			else
		if (opcaoPlano == 2){
		cl.inputDados();
		prata.valorTotal();
		contprata+=1;}
			else
		if (opcaoPlano == 3){
		cl.inputDados();
		diamante.valorTotal();
		contdiamante+=1;
	}
	System.out.println ("Digite a opção: ");
	System.out.println ("1 - Ouro			2 - Prata			3 - Diamante		0 - Sair");
	opcaoPlano = input.nextInt();
	}
	if (opcaoPlano == 0){
	System.out.println ("Plano Ouro:");
	System.out.println ("Foram atendidos "+contouro+" clientes");
	System.out.println ("Plano Prata:");
	System.out.println ("Foram atendidos "+contprata+" clientes");
	System.out.println ("Plano Diamante:");
	System.out.println ("Foram atendidos "+contdiamante+" clientes");

}

}
}

não entendi :cry:

cara,

na sua classe Consultorio, vc nao vai ter um instancia do Cliente,
entao remova

Cliente cl = new Cliente();

não se esqueça da herença, se sua classe ouro, prata e bronze extende de cliente, entao nessa classes filhas vc tem a implementação do metodo inputDados.

nesse pedaço do codigo

while (opcaoPlano != 0)

isso vai ficar em loop infinito, se o usuario por exemplo escolher a opção 1.

t+

cara, entedi, mas na classe cliente eu tenho algumas perguntas que precisam ser feitas, por isso eu criei pra poder chamar no if la em baixo.
cl.mostarDados().
Se eu tirar essa instancia, como vou chamar as perguntas?

quanto a esse looping, ele deve ser “infinito” mesmo, caso a pessoa digite 0, ele geral um relatorio.

Não se esqueça que todas as classes que herdam de Cliente, possuem seus metodos.

como eu vou chamar o metodo de Cliente pela classe main consultorio então? eu tirei o 1. Cliente cl = new Cliente(); e chamei Cliente.mostrarDados() e deu erro.

o programa continua ignorando o if, eu fiz um teste pra colocar se o preço for maior que 60 ele colocar preco=0 else preco*0.3, ele continua ignorando o if e fazendo o calculo, mesmo o preço sendo maior que 60…entendeu?

cara,

vc ta fazendo uma confusão danada, seu metodo mostrarDados(), nao ta na classe Cliente, entao so vc vai funcionar na classe que vc implementou, eu fiz um teste com a idade aqui e funcionou.

t+

nossa, verdade, fiz confusão mesmo com o metodo la.
vc comentou que o mostrarDados() só vai funcionar na classe que eu implementei. eu fiz o calculo na classe ouro, o mostrarDados está na classe ouro, eu estou chamando o metodo que diz o preço após o calculo, to ficando confuso =/

é mais facil vc postar todo seu codigo para eu te poder te ajudar.

consultorio (main):

import java.awt.event.*;
import java.util.Scanner;



public class consultorio {
	public static void main (String args[]){
		//Este programa serve unicamente para lembrar os comandos e treinar a logica//
		
		//Consultorio//
		
		int opcaoPlano; //Opção do plano
		int contouro=0;
		int contprata=0;
		int contdiamante=0;
		//String pl;
		Cliente cl = new Cliente();
		Ouro ouro = new Ouro();
		Prata prata = new Prata();
		Diamante diamante = new Diamante();

		Scanner input = new Scanner (System.in);		
		System.out.println ("Bem vindo ao consultorio, favor informar o plano: ");
		System.out.println ("1 - Ouro			2 - Prata			3 - Diamante		0 - Sair");
		opcaoPlano = input.nextInt();
		while (opcaoPlano <0 || opcaoPlano >4){
		System.out.println ("Opção inválida, digite novamente a opção desejada: ");
		System.out.println ("1 - Ouro			2 - Prata			3 - Diamante		0 - Sair");
		opcaoPlano = input.nextInt();
	}
	
	while (opcaoPlano != 0){
	
		if (opcaoPlano == 1){
		cl.inputDados();
		ouro.valorTotal();
		ouro.mostrarDados();
		contouro+=1;
		}
			else
		if (opcaoPlano == 2){
		cl.inputDados();
		prata.valorTotal();
		contprata+=1;}
			else
		if (opcaoPlano == 3){
		cl.inputDados();
		diamante.valorTotal();
		contdiamante+=1;
	}
	System.out.println ("Digite a opção: ");
	System.out.println ("1 - Ouro			2 - Prata			3 - Diamante		0 - Sair");
	opcaoPlano = input.nextInt();
	}
	if (opcaoPlano == 0){
	System.out.println ("Plano Ouro:");
	System.out.println ("Foram atendidos "+contouro+" clientes");
	System.out.println ("Plano Prata:");
	System.out.println ("Foram atendidos "+contprata+" clientes");
	System.out.println ("Plano Diamante:");
	System.out.println ("Foram atendidos "+contdiamante+" clientes");
	
}
 			
}
}

cliente

import java.util.Scanner;


public class Cliente extends consultorio{
			
	protected int idade;
	private int ano;
	private String mat;
	private String nome;

	
	public Cliente (int idade, int ano, String nome, String mat){
			this.idade=idade;
			this.ano=ano;
			this.mat=mat;
			this.nome=nome;

}
	public Cliente(){
	}
	public void setIdade (int idade){
		this.idade=idade;
	}
	
		public int getIdade()
		{
			return idade;
		}
				
		public void inputDados(){
		Scanner input = new Scanner (System.in);
		/*System.out.println ("Digite a Matricula");
		mat = input.next();
		while (mat.length() > 5 || mat.length() < 5)
		{
		System.out.println ("Matrícula inválida.");
		System.out.println ("Digite novamente: ");
		mat = input.next();
		}
		System.out.println ("Digite o nome: ");
		nome = input.next();*/
		System.out.println ("Digite a idade: ");
		idade = input.nextInt();
		System.out.println ("Digite o ano de ingressão no plano");
		ano=input.nextInt();
		while (ano < 1850 || ano > 2011){
			
		System.out.println ("Digite o ano de ingressão no plano");
		ano=input.nextInt();
		}
	
		
	}
}

ouro

import java.util.Scanner;
public class Ouro extends Cliente{
	private double preco;


	
	
	public Ouro (double preco){

			this.preco=preco;
	}
	
	
	
	public Ouro(){
	}
			
	public double valorTotal(){
			Scanner input = new Scanner (System.in);
	
	
		System.out.println ("Digite o preço da consulta:");
			preco=input.nextDouble();
			if (getIdade() > 60 )
			{preco=0;
			return preco;}
			else
			{preco=preco*0.3;
				return preco;}
	}
					public void mostrarDados(){
		
	/*	System.out.println ("Plano ");
		System.out.println ("-----------------------------------------");
		System.out.println ("Informe eu nome e matricula: ");
		//Scanner///*/
		System.out.println ("Preço da consulta: "+preco);
	//	System.out.println ("Preço final: "+valor);
	}
}

prata

import java.util.Scanner;
public class Prata extends Cliente{
	private double preco;
	private double valor;
	
	
	public Prata (double preco, double valor){
		this.preco=preco;
		this.valor=valor;
	}
	public Prata(){
		
	}
	public double valorTotal(){
		Scanner input = new Scanner (System.in);
		System.out.println ("Digite o preco da consulta: ");
		preco=input.nextDouble();
		preco*=0.20;
		valor=preco;
		return valor;
	}
	
	
	public void mostrarDados(){
		System.out.println ("Preco da consulta"+preco);
		System.out.println ("Preco final"+valorTotal());
	}
	
	
}

diamante

import java.util.Scanner;
public class Diamante extends Cliente{
	private double preco;
	private double valor;
	
	
	public Diamante(double preco, double valor){
		this.preco=preco;
		this.valor=valor;
	}
	public Diamante(){
	}
	
	public double valorTotal(){
		Scanner input = new Scanner (System.in);
		System.out.println ("Digite o preco da consulta: ");
		preco=input.nextDouble();
		preco*=0.40;
		valor=preco;
		return valor;
		
	}
	
	public void mostrarDados(){
		System.out.println ("Preco da consulta"+preco);
		System.out.println ("Preco final"+valorTotal());
		
	}
	}

cara,

segue o codigo resolvido, vc vai ter que colocar meu nome seu trabalho viuuu… :smiley:

import java.util.Scanner;

public class consultorio {
	public static void main(String args[]) {
		// Este programa serve unicamente para lembrar os comandos e treinar a
		// logica//

		// Consultorio//

		int opcaoPlano; // Opção do plano
		int contouro = 0;
		int contprata = 0;
		int contdiamante = 0;
		// String pl;
		Ouro ouro = new Ouro();
		Prata prata = new Prata();
		Diamante diamante = new Diamante();

		Scanner input = new Scanner(System.in);
		System.out.println("Bem vindo ao consultorio, favor informar o plano: ");
		System.out.println("1 - Ouro			2 - Prata			3 - Diamante		0 - Sair");
		opcaoPlano = input.nextInt();
		while (opcaoPlano < 0 || opcaoPlano > 4) {
			System.out.println("Opção inválida, digite novamente a opção desejada: ");
			System.out.println("1 - Ouro			2 - Prata			3 - Diamante		0 - Sair");
			opcaoPlano = input.nextInt();
		}

		while (opcaoPlano != 0) {
			if (opcaoPlano == 1) {
				ouro.inputDados();
				ouro.valorTotal();
				ouro.mostrarDados();
				
				contouro += 1;
			} else if (opcaoPlano == 2) {
				prata.inputDados();
				prata.valorTotal();
				prata.mostrarDados();
				
				contprata += 1;
			} else if (opcaoPlano == 3) {
				diamante.inputDados();
				diamante.valorTotal();
				diamante.mostrarDados();
				
				contdiamante += 1;
			}
			System.out.println("Digite a opção: ");
			System.out.println("1 - Ouro			2 - Prata			3 - Diamante		0 - Sair");
			opcaoPlano = input.nextInt();
		}
		if (opcaoPlano == 0) {
			System.out.println("Plano Ouro:");
			System.out.println("Foram atendidos " + contouro + " clientes");
			System.out.println("Plano Prata:");
			System.out.println("Foram atendidos " + contprata + " clientes");
			System.out.println("Plano Diamante:");
			System.out.println("Foram atendidos " + contdiamante + " clientes");

		}
	}
}
import java.util.Scanner;

public abstract class Cliente {

	protected int idade;
	private int ano;
	private String mat;
	private String nome;

	public Cliente(int idade, int ano, String nome, String mat) {
		this.idade = idade;
		this.ano = ano;
		this.mat = mat;
		this.nome = nome;
	}

	public Cliente() {
	}

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

	public int getIdade() {
		return idade;
	}

	public int getAno() {
		return ano;
	}

	public void setAno(int ano) {
		this.ano = ano;
	}

	public String getMat() {
		return mat;
	}

	public void setMat(String mat) {
		this.mat = mat;
	}

	public String getNome() {
		return nome;
	}

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

	public void inputDados() {
		Scanner input = new Scanner(System.in);
		/*
		 * System.out.println ("Digite a Matricula"); mat = input.next(); while
		 * (mat.length() > 5 || mat.length() < 5) { System.out.println
		 * ("Matrícula inválida."); System.out.println ("Digite novamente: ");
		 * mat = input.next(); } System.out.println ("Digite o nome: "); nome =
		 * input.next();
		 */
		System.out.println("Digite a idade: ");
		idade = input.nextInt();
		System.out.println("Digite o ano de ingressão no plano");
		ano = input.nextInt();
		while (ano < 1850 || ano > 2011) {

			System.out.println("Digite o ano de ingressão no plano");
			ano = input.nextInt();
		}
	}
	
	public abstract void valorTotal();
	
	public abstract void mostrarDados();
}
import java.util.Scanner;

public class Ouro extends Cliente {
	private double preco;
	private double valor;

	public Ouro(double preco, double valor) {
		this.preco = preco;
		this.valor = valor;
	}

	public Ouro() {
	}
	
	public double getPreco() {
		return preco;
	}

	public void setPreco(double preco) {
		this.preco = preco;
	}

	public double getValor() {
		return valor;
	}

	public void setValor(double valor) {
		this.valor = valor;
	}

	public void valorTotal() {
		Scanner input = new Scanner(System.in);

		System.out.println("Digite o preço da consulta:");
		preco = input.nextDouble();
		
		if (getIdade() > 60) {
			valor = 0;
		} else {
			valor = preco * 0.3;
		}
	}

	public void mostrarDados() {
		System.out.println("Preço da consulta: " + preco);
		System.out.println("Preço final: "+valor);
	}
}
import java.util.Scanner;

public class Diamante extends Cliente {
	private double preco;
	private double valor;

	public Diamante(double preco, double valor) {
		this.preco = preco;
		this.valor = valor;
	}

	public Diamante() {
	}

	public void valorTotal() {
		Scanner input = new Scanner(System.in);
		System.out.println("Digite o preco da consulta: ");
		preco = input.nextDouble();
		valor = preco * 0.40;
	}

	public void mostrarDados() {
		System.out.println("Preco da consulta: " + preco);
		System.out.println("Preco final: " + valor);
	}
}
import java.util.Scanner;
public class Prata extends Cliente{
	private double preco;
	private double valor;
	
	public Prata (double preco, double valor){
		this.preco = preco;
		this.valor = valor;
	}
	
	public Prata(){
		
	}
	
	public double getPreco() {
		return preco;
	}

	public void setPreco(double preco) {
		this.preco = preco;
	}

	public double getValor() {
		return valor;
	}

	public void setValor(double valor) {
		this.valor = valor;
	}

	public void valorTotal(){
		Scanner input = new Scanner (System.in);
		System.out.println ("Digite o preco da consulta: ");
		preco = input.nextDouble();
		valor = preco * 0.20;
	}
	
	public void mostrarDados(){
		System.out.println("Preco da consulta: "+preco);
		System.out.println("Preco final: "+valor);
	}
}

t+

WOW, nao esperava por essa hahaaha, agradeço muito pela ajuda e pela paciência, e de alguma forma por me ensinar o que é uma classe abstrata que eu não sabia hahahaha.
ainda estou com algumas duvidas em relação ao que eu errei, bom, mais uma vez MUITO obrigado, e sucesso!!

:lol:

so marca esse topico como resolvido.

t+