Polymorphie

Adriano10

Bekanntes Mitglied
Java:
public class F {
   
    private F f;
   
    F(F f){
        this.f = f;
    }
   
    F(){
       
    }
    public double c(double w) {
        return w;
    }

public class add extends F{
   

    add(F f){
        super(f);
       
    }
    public double c(double w) {
        return super.c(w) + 5;
    }

}
public class mult extends F {
    mult(){
       
    }
   
    mult(F a){
        super(a);
    }
    @Override
    public double c(double w) {
        return super.c(w) * 3;
    }

Beim Testen : wieso bekomme ich immer Ergebniss 10 anstatt 20? Wie so wird erst die Klasse "multi" nicht ausgeführt?
mit jedem Hinweis würde mir sehr geholfen....
Vielen Dank für die große Hilfe im Voraus:..

Java:
F f = new add(new multi);

System.err.println(f.c(5))
 
Zuletzt bearbeitet von einem Moderator:
Nutze bitte [code=java]...Java Code...[/code] Tags und schreibe den tatsächlich von dir verwendeten Code, denn dieser Code hier:
Java:
F f = new add(new multi);
ist sicherlich nicht das, was bei dir tatsächlich steht.
 
Code:
public class F {
    
    private F f;
    
    F(F f){
        this.f = f;
    }
    
    F(){
        
    }
    public double c(double w) {
        return f == null ? w : f.c(w);
    }

    public F getF() {
        return f;
    }

    public void setF(F f) {
        this.f = f;
    }
}

//ADD Class

public class add extends F{
    

    add(F f){
        super(f);
        
    }
    public double c(double w) {
        return super.c(w) + 7;
    }
}

//Class mult
public class mult extends F{
    
    mult(){
        
    }
    
    mult(F a){
        super(a);
    }
    @Override
    public double c(double x) {
        return super.c(x) * 3;
    }

}

//Test

public class Test {
    
    public static void main(String[] args) {
        
    
    F f = new add(new mult());
    
    System.out.println(f.c(5));
    
    
    }
}

Ergebniss ist immer noch 10
 

Zurück
Oben