Salut,
j'ai une classe Vector3d qui hérite d'une classe Vector2d et j'aimerais pouvoir appeler une méthode en fonction du type de l'instance :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
// Classe Vector2d
	public Vector2d getScaled(float scalar) {
		return new Vector2d(this.x * scalar, this.y * scalar);
	}
 
// Classe Vector3d
	public Vector3d getScaled(float scalar) {
		return new Vector3d(this.x * scalar, this.y * scalar, this.z * scalar);
	}
Voici les soluces qui me viennent à l'esprit qui ne me semblent pas terribles du tout :
- définir une seule méthode dans Vector2d :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
public Vector3d getScaled(float scalar) {
		return new Vector3d(this.x * scalar, this.y * scalar, this.z * scalar);
	}
et caster si l'instance est un Vector2d :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Vector2d v = new Vector2d();
Vector2d w = (Vector2d)(v.getScaled(12));
- Définir 2 méthodes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
// Classe Vector2d
	public Vector2d getScaled2d(float scalar) {
		return new Vector2d(this.x * scalar, this.y * scalar);
	}
 
// Classe Vector3d
	public Vector3d getScaled3d(float scalar) {
		return new Vector3d(this.x * scalar, this.y * scalar, this.z * scalar);
	}
Quelqu'un connaîtrait-il une solution plus propre ? Y aurait pas un mot-clé permettant de désigner la classe courante et utilisable comme type de retour (ce qui permettrait de redéfinir la méthode)?
Merci d'avance ^^