Hallo, habe ein Problem mit dem Aufruf einer abstrakten Methode der Superklasse im Konstruktor einer Subklasse:
Ich habe folgende abstrakte Oberklasse:
Die Subklasse sieht so aus:
Wenn ich das ganze normal laufen lasse funktioniert es nicht so wie gewollt,
da der letzte Methodenaufruf im Konstruktor der Subklasse (mit this.function()) nicht richtig ausgewertet wird, glaube ich.
Das merkwürdige ist, dass das ganze funktioniert, wenn ich vor die letzte Methode ein Sysout mit einem der beiden Parameter des Konstruktors der Subklasse übergebe.
Danke schon mal für die Hilfe
Ich habe folgende abstrakte Oberklasse:
Java:
public abstract class Distribution {
/**
* uniform distribution for x-axis values
*/
private Uniform uniform1;
/**
* uniform distribution for function
*/
private Uniform uniform2;
/**
* This method sets the borders of the distribution of value r1
* @param a1 The lower limit of the domain of the function
* @param b1 The upper limit of the domain of the function
*/
public void adjustU1(double a1, double b1){
this.uniform1 = new Uniform((double)System.currentTimeMillis(),a1,b1);
}
/**
* This method sets the borders of the distribution of value r2
* @param a2 The lower limit of the codomain of the function
* @param b2 The upper limit of the codomain of the function
*
*/
public void adjustU2(double a2, double b2){
this.uniform2 = new Uniform((double)System.currentTimeMillis(),a2,b2);
}
/**
* The function of the distribution
* @param x
* @return
*/
protected abstract double function(double x);
}
Die Subklasse sieht so aus:
Java:
public class Normal extends Distribution {
private double mean;
private double deviation;
public Normal(double mean, double deviation){
super();
this.mean=mean;
this.deviation=deviation;
super.adjustU1(-3*deviation+mean, 3*deviation+mean);
//Wenn dieses sysout auskommentiert ist funktioniert das ganze
//System.out.println(mean);
super.adjustU2(0, this.function(mean));
}
protected double function(double x) {
return (1/(this.deviation*Math.sqrt(2*Math.PI)))*Math.exp(((x-this.mean)*(x-this.mean))/(-2*this.deviation*this.deviation));
}
}
Wenn ich das ganze normal laufen lasse funktioniert es nicht so wie gewollt,
da der letzte Methodenaufruf im Konstruktor der Subklasse (mit this.function()) nicht richtig ausgewertet wird, glaube ich.
Das merkwürdige ist, dass das ganze funktioniert, wenn ich vor die letzte Methode ein Sysout mit einem der beiden Parameter des Konstruktors der Subklasse übergebe.
Danke schon mal für die Hilfe