Acessando atributo de superclasse

34 respostas
Z

Oi pessoal, estou com essa dúvida a alguns dias, dei uma olhada em gets e sets, mas a duvida ainda permanece:
tenho uma classe e três subclasse.

na classe a pessoa digita a idade.
em uma dessas subclasses eu preciso fzer um polimorfismo, ou seja somente nessa classe eu preciso da idade para fzer um calculo diferente das outras.
A grande questão é que eu não estou conseguindo pegar esse valor e usar na subclasse =/

segue o codigo da classe e o código dessa subclasse especifica:

import java.util.Scanner;


public 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 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();
		}
	
		
	}
}
agora o da SubClasse:
import java.util.Scanner;
public class Ouro extends Cliente{
	private double preco;
	private double valor;

	
	
	public Ouro (double preco, double valor){
			this.valor=valor;
			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();
			super.getIdade();
			if (idade > 60)
			preco=0;
			else
			
			preco*=0.3;
		return valor=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: "+valorTotal());
	}
}

ele compila sem problema, mas quando eu executo, ele le até o preço e termina...ele nao faz o calculo.

Alguem pode ajudar-me por favor? grato desde ja =)

34 Respostas

J

Amigão, você está usando o tipo float no preço… mas acho que o correto seria double!

Essa é a estrutura do float: 0.0f, ou 1.0f, ou 27.5f… etc e tal.
Então, se o usuário não digitar neste modelo x.xf, o programa vai travar mesmo(ou melhor, não vai funcionar corretamente xD).

Troque pelo double! :slight_smile:

A

na sua classe Cliente, vc deve ter o atributo idade como private e os metodos get e set como public.

PS: se sua Classe Ouro ja estende a Cliente, pq vc tem um atributo do tipo Cliente nela tbm, da uma vefiricada.

t+

Z

Javax2011 - Obrigado pela dica, troquei pelo double, mas continua não fazendo o calculo.

Alissonvla - Fiz conforme vc comentou, coloquei idade como private e os metodos get e set como public, e tirei os atributos do tipo Cliente da classe Ouro.
Não adiantou rsrs =(

A

vc tem que tirar o atributo idade da classe Ouro tbm, pq vc ja vai te-la no classe Cliente.

Z

Agora apareceu um erro ao compilar:
idade has private access in Cliente.

Eu troquei o atributo idade para protected (só pra ver c o erro permanecia), o erro sumiu, mas o problema persiste (nao faz o calculo) (eu acho q ele nao ta pegando o valor de idade)

A

na linha 30, vc deve colocar getIdade(), e remover a linha 29.

t+

Z

alissonvla:
na linha 30, vc deve colocar getIdade(), e remover a linha 29.

t+

linha 30 de qualquer classe?

A

classe Ouro, aonde ta dando o problema

Z

mas é na linha 30 msm?

olha minha linda 30 qual é

return valor=preco;
A

no lugar de

if (idade > 60)

deve ser

if (getIdade()> 60)

e remova isso

super.getIdade();
Z

poxa, fiz isso e continua com o mesmo problema

A

segue

import java.util.Scanner;

public class Cliente {

	private 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();
		}

	}

	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;
	}
}
import java.util.Scanner;

public class Ouro extends Cliente {
	private float preco;

	public Ouro(float preco) {
		this.preco = preco;
	}

	public Ouro() {
	}

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

		System.out.println("Digite o preço da consulta:");
		preco = input.nextFloat();
		if (getIdade() > 60)
			preco = 0;
		else
			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: " + valorTotal());
	}

	public float getPreco() {
		return preco;
	}

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

t+

Z

alissonvla muito obrigado, eu não estava colocando pra mostrar a saída por isso nunca via o resultado (e achava q ele nao fazia o calculo).
Agora o problema é que ele IGNORA meu if, e vai direto pro else…vejam.

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

olha sa saída do programa:

Digite a idade:
80
Digite o ano de ingressão no plano
1980
Digite o preço da consulta:
10
Preço da consulta: 3.0

Mesmo eu tenho digitado que a pessoa tem mais de 60 anos, ele pula direto pro else e faz o calculo.

A

cara,

não sei como vc ta fazendo, mas o mais correto seria vc separar sua regra de negocio das suas entidades, entao faça o seguinte, criei mais um classe e coloque todas as regras nela e deixe sua entidade somente com os atributos e metodos get e set.

t+

Z

alissonvla, po cara mas isso é polimorfismo, é feito direto na classe nao? (ja que é somente nela q será feito dessa forma)

A

cara,

no seu codigo vc nao tem nada de polimorfismo nao, no seu codigo vc tem o conceito de herença.
da uma lida aqui nesse link

t+

Z

alissonvla,

eu possuo 3 classes:
ouro, prata e bronze, todas elas possuem o mesmo calculo, porém exclusivamente essa eu preciso de 1 dado a mais que é a idade do cidadão…somente nessa classe esse calculo é feito de uma forma diferente, isso não é polimorfismo?

A

eu estava me baseando no codigo que vc postou, nesse caso que vc relatou é sim polimorfimo.
entao cara, vc vai ter idade na classe Cliente e todas outras herdam dela e depois é so instanciar suas classe filha, ouro, prata ou bronze.

posta todo seu codigo para poder te ajudar.

Z

Então, eu só preciso usar o valor de idade na subclasse ouro. olha como o exercicio pede:
Prata - desconto de 20%
Diamente - desconto de 40%
Ouro - desconto de 30%, se idade superior ou igual a 60 anos, a consulta sai de graça.

segue a classe cliente e a subclasse ouro

CLIENTE:

import java.util.Scanner;


public 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 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*=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);
	}
}

Mto obrigado pela ajuda

A

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+

A

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.

Z

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+

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");

}

}
}
Z

não entendi :cry:

A

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+

Z

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.

A

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

Z

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?

A

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+

Z

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 =/

A

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

Z

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());
		
	}
	}
A

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+

Z

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!!

A

:lol:

so marca esse topico como resolvido.

t+

Criado 14 de outubro de 2011
Ultima resposta 17 de out. de 2011
Respostas 34
Participantes 3