caezar 0 Denunciar post Postado Abril 4, 2014 Amigos! Em meu exemplo de aprendizado estou tentando explorar ao máximo o capítulo de herança, mas ainda tenho uma duvida e peço a ajuda de vocês novamente: Tenho as seguintes classes: Conta public class Conta { int numero; private double saldo; private final double limite = 1500; Cliente titular; public Conta(int numero,double saldo, Cliente titular){ this.numero=numero; this.saldo=saldo; this.titular=titular; Conta.totalDeContas++; } Cliente public class Cliente { String nome; char sexo; int idade; public Cliente(String nome,char sexo,int idade){ this.nome=nome; this.sexo=sexo; this.idade=idade; } } Funcionario public class Funcionario extends Cliente { String nome; String cpf; double salario; public Funcionario(String nome, char sexo,int idade, String cpf, double salario){ super(nome, sexo, idade); this.nome=nome; this.cpf=cpf; this.salario=salario; } } FuncionarioTest public class FuncionarioTest { public static void main(String[] args) { Conta c3 = new Conta("11658",15000,new Funcionario("Ana",'F',26,"1998765",2000)); } } Agora a dúvida: Se todo funcionário é um cliente, como posso imprimir o valor, por exemplo, do salario que esta na classe funcionários? Tentei desta forma, mas não é possivel: System.out.println("Caro sra." + c3.titular.nome + c3.titular.salario); Qual seria a melhor forma de atribuir uma conta a funcionário neste caso? Parece um erro bobo mas estou aprendendo! rsss Muito Obrigado novamente. Compartilhar este post Link para o post Compartilhar em outros sites
Bezerk 3 Denunciar post Postado Abril 6, 2014 Não sua classe Conta vc deve ter um funcionário e não um cliente. Compartilhar este post Link para o post Compartilhar em outros sites
Ericson Willians R. Pires 5 Denunciar post Postado Abril 7, 2014 Na classe conta, é necessário criar um método construtor para aceitar um cliente, e outro para um funcionário. Eu reescrevi todo o seu código, incluindo métodos de acesso e alteração (getters and setters) para os atributos. Caso o que eu tenha feito aparente ser magia negra, adicione-me no Facebook e explico melhor (O link está no meu perfil).Conta: package example; public class Conta { private int número; private double saldo; private final double limite = 1500.00; private Cliente clienteTitular; private Funcionário funcionárioTitular; // Método construtor para Cliente. public Conta(int número, double saldo, Cliente titular) { this.número = número; this.saldo = saldo; this.clienteTitular = titular; } // Método construtor para Funcionário. // Note que as assinaturas são diferentes, se passar um Funcionário para o construtor da classe conta, este é o que será utilizado. public Conta(int número, double saldo, Funcionário titular) { this.número = número; this.saldo = saldo; this.funcionárioTitular = titular; } public int acessarNúmero() { return this.número; } public double acessarSaldo() { return this.saldo; } public double acessarLimite() { return limite; } public Cliente acessarCliente() { return this.clienteTitular; } public Funcionário acessarFuncionário() { return this.funcionárioTitular; } public void alterarNúmero(int novoNúmero) { this.número = novoNúmero; } public void alterarSaldo(double novoSaldo) { this.saldo = novoSaldo; } public void alterarTitular(Cliente novoTitular) { this.clienteTitular = novoTitular; } public void alterarTitular(Funcionário novoTitular) { this.funcionárioTitular = novoTitular; } } Cliente: package example; public class Cliente { private String nome; private char sexo; private int idade; public Cliente(String nome, char sexo, int idade) { this.nome = nome; this.sexo = sexo; this.idade = idade; } public String acessarNome() { return this.nome; } public char acessarSexo() { return this.sexo; } public int acessarIdade() { return this.idade; } public void alterarNome(String novoNome) { this.nome = novoNome; } public void alterarSexo(char novoSexo) { this.sexo = novoSexo; } public void alterarIdade(int novaIdade) { this.idade = novaIdade; } } Funcionário: package example; public class Funcionário extends Cliente { private String CPF; private double salário; public Funcionário(String nome, char sexo, int idade) { super(nome, sexo, idade); // Adiciona ao construtor da superclasse: Cliente. } // Sobrecarga de método construtor. Espaços de nome iguais, mas assinaturas (Argumentos) diferentes. // Se CPF e Salário forem adicionados ao construtor da classe Funcionário, este é o método que será chamado no lugar. public Funcionário(String nome, char sexo, int idade, String CPF, double salário) { super(nome, sexo, idade); // Adiciona ao construtor da superclasse: Cliente. this.CPF = CPF; this.salário = salário; } public String acessarCPF() { return this.CPF; } public double acessarSalário() { return this.salário; } public void alterarCPF(String novoCPF) { this.CPF = novoCPF; } public void alterarSalário(double novoSalário) { this.salário = novoSalário; } } Main: package example; public class Main { public static void main(String[] args) { Conta c3 = new Conta(11658, 15000.00, new Funcionário("Ana", 'F', 26, "1998765", 2000.00)); if (c3.acessarFuncionário().acessarSexo() == 'M') { System.out.println("Caro... String no caso de o cliente ser homem."); } else if (c3.acessarFuncionário().acessarSexo() == 'F') { System.out.println("Cara Sra. " + c3.acessarFuncionário().acessarNome() + ", " + c3.acessarFuncionário().acessarSalário()); } } } Compartilhar este post Link para o post Compartilhar em outros sites
caezar 0 Denunciar post Postado Abril 7, 2014 Caros obrigado. Com a ajuda de vocês entendi. Na verdade funcionário herda de cliente mas obviamente o inverso não acontece. Com o exemplo do Ericson ficou bem exposto como trabalhar com os clientes e funcionários. Caso seja um funcionário ele obrigatoriamente sera um cliente mas ser um cliente não implica ser um funcionário, por isso o mais correto é add o atributo cpf em cliente pois assim funcionário tb herda. Obrigado pela ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
Legollas Dias 1 Denunciar post Postado Junho 4, 2014 mas nesse caso o cliente nao ficaria sem cpf nao!?! ja q soh tem atributo CPF na classe funcionario, e nem todo cliente eh funcionario, deveria ser ao contrario nao?! tirar esse cpf da classe funcionario e colocar na classe cliente, ja q tanto cliente como funcionario tem cpf, mas nem todo cliente eh funcionario?! duvida de novinho galera, desculpe se estou errado Compartilhar este post Link para o post Compartilhar em outros sites