Anfängerfrage zu super



  • //finalAuto.java
    
    public class finalAuto{
    
    	public static void main(String[] args){
    	Zweisitzercabrio X3=new Zweisitzercabrio();
    	X3.name="X3";
    	X3.Baujahr=1999;
    	X3.Erstzulassung=2001;
    	X3.vdauer=12;
    	X3.notsitze=true;
    
    	System.out.println(X3.name);
    	System.out.println(X3.Baujahr);
    	System.out.println(X3.Erstzulassung);
    	System.out.println(X3.vdauer);
    	System.out.println(X3.super.Alter());
    
    	}
    
    }
    ///////////////////////
    
    class Auto{
    	String name;
    	int Baujahr;
    	int Erstzulassung;
    	int Alter(){
    		return (2009-this.Baujahr)*365;
    	}
    
    	}
    
    /////////////////////////////
    class Cabrio extends Auto{
    	int vdauer;
    		int Alter(){
    		return 2009-this.Baujahr;
    	}
    }
    
    //////////////////////////////
    class Zweisitzercabrio extends Cabrio{
    	boolean notsitze;
    
    	int Alter(){
    		return (2009-this.Baujahr)*12;}
    }
    

    1.)Wie kann ich in der main Funktion auf die übergeordnete Klasse Cabrio zugreifen um die Methode Alter auszuführen
    2.)und auf die VaterKlasse Auto um deren Methode auszuführen?
    Mfg
    qwertz
    qwertz



  • Solange du das innerhalb deiner Klassenhierarchie nicht explizit vorsiehst glaube ich nicht, dass es dafür eine Möglichkeit gibt. Schliesslich überschreibt man Methoden, um diejenigen der Basisklasse zu ersetzen...



  • also ich weiß jetz nicht genau was du willst
    bitte beschränke dich auf MINIMAL-beispiele

    aber ich denke du hast folgendes:

    du hast eine instanz der klasse zweisitzcabrio aber willst die funktion der oberklasse auto verwenden, die eigentlich redefiniert wurde?

    das dürfte doch eigentlich gehen oder?

    zweisitzcabrio a = new zweisitzcabrio();
    (auto)a.alter();

    dürfte der einfache cast das problem nicht lösen?
    oder geht das nur in die andere richtung?



  • sry hab mich geirrt klappt nicht 🙂


Anmelden zum Antworten