# Zuweisung Interface



## TechGirl (4. Jul 2016)

Kann mir bitte einer bei der Lösung behilflich sein?

Eventuell mit einer Begründung bzw. Erläuterung.

Aufgabe:
http://www.directupload.net/file/d/4406/22ihhf49_png.htm


----------



## Viktim (5. Jul 2016)

Gibt es denn Irgendwas was du schon weißt oder peilst du das komplett nicht?
Wenn du was verstanden hast, und schon einen Ansatz hast, dann sind konkrete Fragen glaub ich besser


----------



## TechGirl (5. Jul 2016)

Ne gar nicht also für mich ist es wichtig, dass ich die Lösungen der Aufgabe habe sind sehr wichtig.
Daher wäre ich echt sehr dankbar, wenn sich jemand dafür Zeit nehmen könnte


----------



## JStein52 (5. Jul 2016)

1.) richtig weil meinB eine Instanz von B ist und b implementiert ISchnitt
2.) richtig weil meinSubB eine Instanz von SubB ist und diese wiederum Subklasse von SuperAB
3.) .....       kommst du jetzt weiter ?


----------



## TechGirl (6. Jul 2016)

Gibt es da eine Regel, die du mir verraten kannst oder wo nach muss man da googeln?

und was bewirkt dieses ref?


----------



## Jardcore (6. Jul 2016)

ref ist einfach ein Name für eine Varibale.

```
B meinB = new B();
ISchnitt ref = meinB;
```
*B *ist der Klassenname, _meinB _ist der Name der Variable.
Man könnte das nun so lesen:
_meinB _ist vom Typ *B *und diesem weise ich ein neues Objekt vom Typ *B *zu (*new B*())
_ref _ist vom Typ *ISchnitt *und der Variable _ref _weise ich _meinB _zu.
Das geht weil die Klasse *B *das Interface *ISchnitt *implementiert.

Das ist oben links in deinem Bild zu sehen.


----------



## Xyz1 (6. Jul 2016)

Ich hab die Fragen teils per PN beantwortet...


----------



## thecain (6. Jul 2016)

Ziel vom Forum verfehlt!


----------



## Jardcore (6. Jul 2016)

DerWissende hat gesagt.:


> Ich hab die Fragen teils per PN beantwortet...


Na dann mal her damit, damit wir alle von diesem Wissen profitieren.


----------



## JStein52 (6. Jul 2016)

Jardcore hat gesagt.:


> damit wir alle von diesem Wissen profitieren


Geht nicht, dann würden wir alle Wissende


----------



## TechGirl (6. Jul 2016)

ref = meinB; ist richtig
meinAB = meinSubB; ist richtig
meinSubB.draw("hallo"); ist falsch - größerer Typ in kleineren
meinB = meinSubB.drop(); ist richtig
meinSubB = meinB.drop(); ist falsch - größerer Typ in kleineren
meinSuperAB = meinB.drop(); ist richtig
meinA = new SuperAB(); ist falsch - größerer Typ in kleineren
refab = meinSubB.draw("hallo"); ist richtig

Das wären die Lösungen ist jemand damit nicht einverstanden?


----------



## Jardcore (6. Jul 2016)

Kannst du deine Antworten auch noch Begründen, wie es in der Aufgabestellung steht? Also warum sind manche Dinge richtig?


----------



## Xyz1 (6. Jul 2016)

TechGirl hat gesagt.:


> ref = meinB; ist richtig
> meinAB = meinSubB; ist richtig
> meinSubB.draw("hallo"); ist falsch - größerer Typ in kleineren
> meinB = meinSubB.drop(); ist richtig
> ...



Jetzt steht die halbe _*PN*_ im Internet.  Eine Begründung für jede Frage/Antwort müsstest du dir herleiten (können).


----------



## Jardcore (6. Jul 2016)

Ich schon, aber möchte eher wissen ob TE die Aufgabe auch verstanden hat und nicht nur einfach die Lösung präsentiert bekommt. Abschreiben hat noch nie jemanden geholfen.


----------



## Xyz1 (6. Jul 2016)

Bei TO fehlen bei Vererbung noch Pfeile. So schaut's bei mir:





Spoiler: Quelle:





```
public class Temp {
    public static void main(String[] args) {
        A meinA = new A();
        B meinB = new B();
        SubA meinSubA = new SubA();
        SubB meinSubB = new SubB();

        ISchnitt ref = meinB;
        SuperAB meinAB = meinSubB;
        // meinSubB = meinSubB.draw("hallo");
        meinB = meinSubB.drop();
        // meinSubB = meinB.drop();
        SuperAB meinSuperAB = meinB.drop();
        // meinA = new SuperAB();
        SuperAB refab = meinSubB.draw("hallo");
    }
}

interface ISchnitt {
    SuperAB draw(String s);
    B drop();
}

class SuperAB {
    public void plot() {
    }
}

class A extends SuperAB {
    @Override
    public void plot() {
    }
}

class SubA extends A {
    @Override
    public void plot() {
    }
}

class B extends SuperAB implements ISchnitt {
    @Override
    public void plot() {
    }
    @Override
    public SuperAB draw(String s) {
        return this; // can return SubB
    }
    @Override
    public B drop() {
        return this; // can return SubB
    }
}

class SubB extends B {
    @Override
    public SuperAB draw(String s) {
        return super.draw(s);
    }
    @Override
    public B drop() {
        return super.drop();
    }
}
```



richtig/falsch müsstest du erkennen, falsch ist auskommentiert.

Bin ich bereit zu kommentieren? Jaein. 
Begründung bitte selber bearbeiten.


----------



## TechGirl (6. Jul 2016)

die linke Klasse (seite) muss hierarchisch über der zugewiesenen klasse also was nach dem =  als klasse steht stehen?


----------



## Xyz1 (6. Jul 2016)

So hab ich es zwar noch nie gehört, aber ich glaube du machst es richtig.

Eine genaue Begründung/Erklärung wirst du von mir nicht bekommen,
PNs wurden veröffentlicht, als sei das nicht richtig, was ich schrieb.


----------



## TechGirl (6. Jul 2016)

DerWissende hat gesagt.:


> So hab ich es zwar noch nie gehört, aber ich glaube du machst es richtig.
> 
> Eine genaue Begründung/Erklärung wirst du von mir nicht bekommen,
> PNs wurden veröffentlicht, als sei das nicht richtig, was ich schrieb.


Es tut mir sehr leid, aber ich sah da keinen Grund warum man es nicht veröffentlichen sollte, da es nichts privates dabei ist.

Ich meine die User wollten sich auch die Lösung ansehen. Das war der einzige Grund. Es tut mir leid


----------



## Meniskusschaden (8. Jul 2016)

Ich glaube, sofern der Absender den Inhalt nicht als vertraulich gekennzeichnet hat und auch keine anders lautende Vereinbarung mit dem Empfänger getroffen hat, darf der rechtmässige Empfänger einer PN sie veröffentlichen. Ich sehe darin kein Fehlverhalten und auch keinen Grund für ein schlechtes Gewissen.


----------



## Xyz1 (9. Jul 2016)

TechGirl hat gesagt.:


> die linke Klasse (seite) muss hierarchisch über der zugewiesenen klasse also was nach dem =  als klasse steht stehen?



Deine Antwort geht schon in die richtige Richtung. Wie weit bist du denn jetzt, und wo läuft nicht?

Also eine Erklärung/Begründung vorgeben, mach ich nicht (teilweise hab ich ja schon, aber sehr rar).

Und PN's heißen PN's, weil sie PN's heißen.  Das ist trivial und selbstverständlich und natürlich.

Aber ich verurteile deshalb nicht.


----------

