Supposons que j'ai les deux cours suivants
public class alpha {
public alpha(){
//some logic
}
public void alphaMethod1(){
//some logic
}
}
public class beta extends alpha {
public beta(){
//some logic
}
public void alphaMethod1(){
//some logic
}
}
public class Test extends beta
{
public static void main(String[] args)
{
beta obj = new beta();
obj.alphaMethod1();// Here I want to call the method from class alpha.
}
}
Si je lance un nouvel objet de type bêta, comment puis-je exécuter la logique alphamethod1
Trouvée dans la classe alpha plutôt que bêta? Puis-je simplement utiliser super().alphaMethod1()
<- Je me demande si cela est possible.
L'autotype dans Eclipse IDE me donne la possibilité de sélectionner alphamethod1
Dans la classe alpha
ou dans la classe beta
.
Tu peux faire:
super.alphaMethod1();
Notez que super
est une référence au parent, mais super () est son constructeur.
Utilisez simplement super.alphaMethod1();
Vous ne pouvez pas appeler alphaMethod1 () en utilisant l'objet de la version bêta Mais vous avez deux solutions:
solution 1: appelez l'alpha alphaMethod1()
à partir de la bêta alphaMethod1()
class Beta extends Alpha
{
public void alphaMethod1()
{
super.alphaMethod1();
}
}
ou de toute autre méthode de bêta comme:
class Beta extends Alpha
{
public void foo()
{
super.alphaMethod1();
}
}
class Test extends Beta
{
public static void main(String[] args)
{
Beta beta = new Beta();
beta.foo();
}
}
solution 2: crée l'objet alpha et appelle l'alpha alphaMethod1()
class Test extends Beta
{
public static void main(String[] args)
{
Alpha alpha = new Alpha();
alpha.alphaMethod1();
}
}
Il est possible d'utiliser super pour appeler la méthode depuis la classe mère, mais cela signifierait que vous avez probablement un problème de conception. Peut-être que B.alphaMethod1()
ne devrait pas remplacer la méthode de A et s'appelle B.betaMethod1()
.
Si cela dépend de la situation, vous pouvez mettre une logique de code comme:
public void alphaMethod1(){
if (something) {
super.alphaMethod1();
return;
}
// Rest of the code for other situations
}
Ainsi, il n'appellera la méthode de A qu'en cas de besoin et restera invisible pour l'utilisateur de la classe.
Chaque fois que vous créez un objet de classe enfant, cet objet possède toutes les fonctionnalités de la classe parent. Ici, Super () est la facilité pour le parent d’accession.
Si vous écrivez super () à ce moment-là, le constructeur par défaut des parents est appelé. idem si vous écrivez super.
ce mot-clé désigne l'objet actuel de la même manière que la fonction super clé Word pour accéder aux parents.