
Originariamente inviata da
signfra
Allora ho le seguenti classi
codice:
public class Impiegato {
private String nome,matricola;
private double salario;
private int annidiservizio;
public int conta=0;
public Impiegato(String n,double salario, String matricola,int anno){
this.nome=n;
this.salario=salario;
this.matricola=matricola;
this.annidiservizio=anno;
}
public int Contatore(){
for(int i=0;i<10;i++){
this.conta++;
}
return this.conta;
}
public void incrementasalario(double percent){
this.salario*= 1+percent/100;
}
public void stampainfo(){
System.out.println(nome+""+salario+""+matricola);
}
public String getNome(){
return nome;
}
public int getannidiservizio(){
return annidiservizio;
}
}
codice:
public class Manager extends Impiegato{
private String nomeSegretaria;
public Manager(String n, double salario, String Matricola, int anno){
super(n ,salario,Matricola,anno);
nomeSegretaria="";
}
public void incrementaSalario(double percentuale){
double bonus=0.5*getannidiservizio();
super.incrementasalario(percentuale + bonus);
}
public String getnomesegretaria(String nome){
return nomeSegretaria=nome;
}
public void setNomesegretaria(String nome){
this.nomeSegretaria=nome;
}
public int Contatore2(){
int conta=Contatore();
super.Contatore();
return conta;
}
}
codice del main
codice:
public class NewMain {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
String n;
double salario;
String matricola;
int anno;
int conta2;
Scanner out=new Scanner(System.in);
System.out.print("Inserisci n ");
n=out.next();
System.out.println("Inserisic salario");
salario=out.nextDouble();
System.out.print("Inserisci matricola");
matricola=out.next();
System.out.print("Inserisci anni di servizio");
anno=out.nextInt();
Impiegato imp=new Impiegato( n, salario, matricola, anno);
imp.Contatore();
Manager conta=new Manager(n,salario,matricola,anno);
conta2=conta.Contatore2();
System.out.println("Contatore incrementato pari a "+conta2);
}
}
Mentre nel mio codice interessato
codice:
while (rs.next()) {
this.conta++;
}
this.conta=this.contatorenumeropersone(this.conta);
System.out.println("Contatore persone view tabel"+this.conta);
public int contatorenumeropersone(int conta){
return this.conta;
}
fin quì tutto ok
poi andando nel seguente codice
codice:
public int contatoretotale(){
int conta;
conta=super.contatorenumeropersone(super.conta);
super.contatorenumeropersone(super.conta);
return super.conta;
}
Ora il problema è il seguente:
mentre nel primo programma tutto funziona correttamente in quanto non esiste nessuna variabile conta passata,
nel secondo programma in quanto importo il super.conta mi restiutuisce il valore zero.
Il fatto devo per forza importarla per avere il valore corretto.
praticamente viene importato solo il valore che è stata assegnata nella dichiarazione per esempio protected int conta2=10; e viene ereditata senza problemi, mentre quanto incremento sorgono dei problemi nel passaggio della variabile conta conta=super.contatorenumeropersone(super.conta);