2013-01-12 1 views
0

possible en double:
Why no static methods in Interfaces, but static fields and inner classes OK?pourquoi la mise en œuvre est autorisée avec interface

Je veux savoir pourquoi que l'interface ne permet pas de bloc statique, mais ils permettent de déclarer variable statique. Que faire si je veux initialiser une variable statique sur une logique.

edit: Plus tôt, je n'ai pas posté ma requête dans une meilleure forme mais c'est ma requête avec un exemple de code. s'il vous plaît, regardez-le.

interface A { 
    static class XYZ { 
     public static void methodA() { 
      // some implementation 
      System.out.println("methodA"); 
     } 

     public static void methodB() { 
      // some more implementation 
      System.out.println("methodB"); 
     } 
    } 

    void methodC(); 
} 

public class ABC implements A { 
    public static void main(String[] args) { 
     A.XYZ.methodA(); 
    } 

    @Override 
    public void methodC() { 
     // TODO Auto-generated method stub 

    } 
} 

Depuis fin de l'interface est de fournir un mécanisme où les utilisateurs/développeurs de l'interface peuvent mettre en œuvre les propriétés (méthodes) en fonction de leurs besoins. Mais si je suis autorisé à ajouter l'implémentation dans l'interface, alors pourquoi cet objectif de l'interface est-il vaincu, expliquez-moi pourquoi cette implémentation dans l'interface est autorisée, il doit y avoir quelque chose et pourquoi? je veux savoir

+0

Utilisez Java 8 et vous le pouvez. –

+0

Je pense que la réponse à ** pourquoi l'interface ne permet pas le blocage statique, mais ils permettent de déclarer la variable statique ** peut être commentée dans la deuxième question dupliquée par @peterk. C'est idealogique et non technique. – andy

Répondre

2

Ils ont conçu des interfaces pour ne pas autoriser les implémentations; un bloc statique constituerait une implémentation, donc il n'est pas autorisé.

+1

ouais, ils l'ont fait. ils, vous voulez dire les pères de Java. – Juvanis

+0

mais nous sommes autorisés à donner une implémentation dans la méthode de la classe interne en interface. –

Questions connexes