Unten ist ein Beispiel, das den Vorteil der Zusammensetzung gegenüber Vererbung zeigt. Alles, was ich nicht verstehe, ist der Code in der Klasse Testbus. Das istWie ist es möglich, ein "neues" als Parameter in einem anderen neuen zu verwenden?
new Bus(new PrototypeEngine1()).drive();
Ich bin nicht vertraut mit dem oben genannten Stil des Codes. Wie ist es möglich, ein "neues" als Parameter in einem anderen neuen zu verwenden? Was ist diese Art von übergebenen Parameter oder Argument? Gibt es einen Namen dafür?
Unten ist der vollständige Kontext, dem ich folgte, bis ich auf "TestBus" Klasse stieß.
Es gibt eine Klassenengine mit einer Methodenmethode start(). Es gibt eine andere Klasse Bus es hat eine Methode Laufwerk().
//dummy class or prototype class for actual engine
class PrototypeEngine1{
public boolean start(){
// do smething
return true;
}
}
class Bus extends PrototypeEngine1 {
public void drive(){
boolean isStarted = false
boolean isStarted = super.start();
if(isStarted == true) {
// do something
}else {
// do something
}
}
}
Erstellen von Buss-Klasse, die in ihm einen Verweis von Motor hat
class Bus {
private Engine engine;
public Bus (Engine engine)
{
this.engine = engine;
}
public void drive(){
boolean isStarted = false;
isStarted = engine.start();
if(isStarted == true) {
// do something
}else {
// do something
}
}
}
class TestBus{
public void testDrive(){
new Bus(new PrototypeEngine1()).drive();
}
}
Der Code, den Sie gepostet haben, wird nicht kompiliert, da in 'new Bus (new PrototypeEngine1(). Drive())' '' PrototypEngine1' keine 'drive'-Methode hat. Meintest du 'neuer Bus (new PrototypeEngine1()). Drive()'? Außerdem vermute ich, dass Ihre erste 'Bus'-Klasse eine' StandardEngine' oder etwas ähnliches sein soll. Bitte zeigen Sie eine [mcve] an, die tatsächlich kompiliert wird (und richtig formatiert ist). –
Ihre Klassen sind nicht klar. Wie auch immer ... Sie können hier einen neuen Operator verwenden, da dieser nur zum Erstellen des Objekts verwendet wird. Sie können zuerst das PrototypEngine1-Objekt erstellen und einer Variablen zuweisen und diese Variable in einem neuen Bus (..) verwenden. Es wird nur eine neue Instanz von PrototypEngine übergeben, die der Bus-Konstruktor als Parameter für seine Operationen verwendet. –
Bitte um Gottes Willen fügen Sie einen aussagekräftigen Titel für diese Frage hinzu. –