Pessoal, como eu posso programar as classes abaixo para o meu atributo saldo ser private e ainda utilizar Herança nas classes seguintes???
[code]
class Conta {
protected double saldo;
double getSaldo() {
return this.saldo;
}
void deposita (double valor) {
this.saldo += valor;
}
void saca (double valor){
this.saldo -= valor;
}
void atualiza (double taxa) {
this.saldo += this.saldo * taxa;
}
}
[\code]
CLASSE CONTA CORRENTE
[code]
class ContaCorrente extends Conta {
void atualiza (double taxa) {
this.saldo += this.saldo * taxa * 2;
}
void deposita (double valor) {
this.saldo += valor * 0.9962 ;
}
}
[\code]
CLASSE CONTA POUPANCA
[code]
class ContaPoupanca extends Conta {
void atualiza (double taxa){
this.saldo += this.saldo * taxa * 3;
}
}
[\code]
CLASSE TESTACONTA
[code]
public class TestaConta {
public static void main(String[] args) {
Conta c = new Conta();
ContaCorrente cc = new ContaCorrente();
ContaPoupanca cp = new ContaPoupanca();
c.deposita(1000);
cc.deposita(1000);
cp.deposita(1000);
c.atualiza(0.01);
cc.atualiza(0.01);
cp.atualiza(0.01);
System.out.println(c.getSaldo());
System.out.printf("%.2f \n",cc.getSaldo());
System.out.println(cp.getSaldo());
}
}
[\code]
jgbt
Dezembro 21, 2007, 3:47pm
#2
nada que tenha o modifcador de visbilidade private é herdado.
pq vc quer fazer isso?
[]´s
OK, mas eu precisaria criar os metodos set e get com protected???
Fiz isso e nao funcionou…
Se as classes não forem do mesmo pacote, declare os métodos como public. O porque disso é só procurar.
Até!
LPJava
Dezembro 21, 2007, 6:10pm
#6
malsan
Dezembro 22, 2007, 3:03pm
#7
[code]
class Conta {
private double saldo;
public double getSaldo() {
return this.saldo;
}
public double setSaldo(double saldo) {
this.sald0 = saldo
}
public void deposita (double valor) {
this.setSaldo(this.getSaldo() + valor);
}
public void saca (double valor){
this.setSaldo(this.getSaldo() - valor);
}
public void atualiza (double taxa) {
this.setSaldo(this.getSaldo() * taxa);
}
}
[\code]
CLASSE CONTA CORRENTE
[code]
class ContaCorrente extends Conta {
public void atualiza (double taxa) {
this.setSaldo(this.getSaldo() + this.getSaldo() * taxa * 2);
}
public void deposita (double valor) {
this.setSaldo(this.getSaldo() + valor * 0.9962);
}
}
[\code]
CLASSE CONTA POUPANCA
[code]
class ContaPoupanca extends Conta {
public void atualiza (double taxa){
this.ssetSaldo(this.getSaldo() + this.getSaldo() * taxa * 3);
}
}
[\code]
CLASSE TESTACONTA
[code]
class TestaConta {
public static void main(String[] args) {
Conta c = new Conta();
ContaCorrente cc = new ContaCorrente();
ContaPoupanca cp = new ContaPoupanca();
c.deposita(1000);
cc.deposita(1000);
cp.deposita(1000);
c.atualiza(0.01);
cc.atualiza(0.01);
cp.atualiza(0.01);
System.out.println(c.getSaldo());
System.out.printf("%.2f \n",cc.getSaldo());
System.out.println(cp.getSaldo());
}
}
[\code]
Testa aí!
LPJava
Dezembro 24, 2007, 9:28am
#8
cara me diz uma coisa aonde foi q vc achou isso: [quote][\code]? [/quote] leia direito o link que ti mandei…
flw! quando postar direitinho fica mais facil de ler… seu codigo.
Vc usa os métodos que tem disponiveis.
class Conta {
private double saldo;
double getSaldo() {
return this.saldo;
}
void deposita (double valor) {
this.saldo += valor;
}
void saca (double valor){
this.saldo -= valor;
}
void atualiza (double taxa) {
this.saldo += this.saldo * taxa;
}
}
CLASSE CONTA CORRENTE
class ContaCorrente extends Conta {
void atualiza (double taxa) {
super.deposita( this.getSaldo()* taxa * 2);
}
void deposita (double valor) {
super.deposita(valor * 0.9962);
}
}
Sobre a sua pergunta, se os métodos devem ser protected ou private ou public, eu optaria por public. O mesmo poderia ser utilizado em outras classes, não somente na subclasse. Isso é uma característica avantajada de Orientação a Objetos.
Eu usaria sempre private…
te da mais segurança nos codigos…
e quando voce esta tratando de conta entao…
voce nao quer que seu saldo e outros atributos fiquem visiveis…
colocaria dessa forma…