Heim > Java > javaLernprogramm > Hauptteil

Java verwendet Methoden als Beispiele für Polymorphismus durch Übergabe von Parametern

黄舟
Freigeben: 2017-09-26 09:15:45
Original
1989 Leute haben es durchsucht

Der folgende Editor zeigt Ihnen ein Beispiel für die Übergabe von Methoden als Parameter in Java – Polymorphismus. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.

Als ich vor einiger Zeit intelligente Algorithmen studierte, stellte ich fest, dass der spezifische Implementierungsprozess oft ähnlich ist, wenn Java zur Implementierung verwendet wird, die Fitnesswertfunktion jedoch schon Basierend auf dem Forschungsobjekt

Die Unterschiede haben sich stark verändert, was die Wartung des Codes stark behindert hat. Daher stellt sich die Frage: Kann die Fitnesswertfunktion

als a an die Methode übergeben werden? Parameter? Aufgrund der Existenz von Zeigern können Funktionen aufgrund der Komplexität und Schwierigkeit der Verwendung von Zeigern in der Regel durchschnittlich sein. Wenn Sie zu einem objektorientierten Denken wechseln, können Sie sich vorstellen, eine Schnittstelle I zu entwerfen. Diese Schnittstelle stellt nur eine Methode bereit. Dann entspricht dies der Übergabe der Schnittstelle als Parameter an die Methode Design Eine Klasse implementiert die Schnittstelle I, dann kann die Funktion an die Methode übergeben werden.

Im Folgenden wird die 0,618-Golden-Suchmethode als Beispiel genommen. Aufgrund der unterschiedlichen Zielfunktionen entspricht sie der obigen Beschreibung. Beachten Sie, dass diese Art der Suche nur für Einzelpeakfunktionen möglich ist 🎜>

Der Algorithmus ist in der folgenden Abbildung dargestellt:


1 Erstellen Sie eine Schnittstelle. Es gibt nur eine Methode zur Anpassung von Werten:

2. Erstellen Sie eine Klasse und Implementieren Sie einfach die obige 0,618-Suchmethode:


public interface Fitness {
 public double getFitness(double X);
}
Nach dem Login kopieren


3. Erstellen Sie eine Klasse, um die Fitness umzusetzen Schnittstelle, das heißt, legen Sie Ihre eigenen Ziele fest. Schreiben Sie die Funktion. Hier ist eine quadratische Funktion einer Variablen als Beispiel:


public class stationUtils{/***
 * 黄金分割搜索法,寻找最小值的函数
 * @param min 搜索上限
 * @param max 搜索下限
 * @param fitness 函数值
 * @return
 */
 public double goldenSearch(double min,double max,Fitness fitness){
  /*double X1=min+0.382*(max-min);*/
  double a=doubleOperation.substract(max,min);
  double X1=doubleOperation.add(min,doubleOperation.multiply(0.382,a));
  /*double X2=min+0.618*(max-min);*/
  double X2=doubleOperation.add(min,doubleOperation.multiply(0.618,a));
  double F1=fitness.getFitness(X1);
  double F2=fitness.getFitness(X2);
  while(Math.abs(doubleOperation.substract(X1,X2))>delt){
   if(F1<F2){
   max=X2;
   X2=X1;
   F2=F1;
   X1=min+0.382*(max-min);
   F1=fitness.getFitness(X1);
   }else{
   min=X1;
   X1=X2;
   F1=F2;
   X2=min+0.618*(max-min);
   F2=fitness.getFitness(X2);
   }
  }
  return doubleOperation.pide(doubleOperation.add(max,min),2);

 }
}
Nach dem Login kopieren

4. Rufen Sie einfach auf:


 public class Func implements Fitness{
  @Override
  public double getFitness(double X) {
   return X*X- 3 * X + 1;
  }
 }
Nach dem Login kopieren

Zusammenfassung

, es gibt Wenn Sie weitere Parameter übergeben, können Sie den Wert übergeben. In der Schnittstellenimplementierungsklasse kann die getFitness-Methode auf diesen Parameter zugreifen.

Das obige ist der detaillierte Inhalt vonJava verwendet Methoden als Beispiele für Polymorphismus durch Übergabe von Parametern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage