Partage
  • Partager sur Facebook
  • Partager sur Twitter

Java 8 : interfaces methodes default

Anonyme
    4 février 2018 à 11:31:40

    public static void main(String[] args) {
            // TODO code application logic here
    
            Alien.reproduire(); // ne fonctionne pas
            Pondre pond = new Alien();
            pond.reproduire(); // Ne fonctionne pas.
        }
        
        public interface Reproduction {
    
    	public static void description() {
    		System.out.println("Méthode statique dans une interface");
    	}
    	
        }
        
        public interface Pondre extends Reproduction {
    	public static void description() {
                Reproduction.description();
                System.out.println("Redéfinie dans Pondre.java");
    	}
            
            default void reproduire() {
                System.out.println("Je ponds des oeufs !");
    	}
        }
        
        public interface Mitose extends Reproduction {
    	public static void description() {
                Reproduction.description();
                System.out.println("Redéfinie dans Mitose.java");        
    	}
            
            default void reproduire() {
                System.out.println("Je me divise !");
    	}
        }
        
        public class Alien implements Pondre, Mitose {
    
    	public void reproduire() {
    		
                System.out.println("Je suis un alien et :");
                Pondre.super.reproduire();
                Mitose.super.reproduire();
    
    	}
        }   
        
    }
    Tout le code fonctionne sauf quand j'essaie d'utiliser la méthode reproduire de la class Alien.
    ca fait 2 jours que je me casque la tête pourriez vous m'aider à resoudre mon problème.
    • Partager sur Facebook
    • Partager sur Twitter
      3 août 2018 à 19:42:27

      publicclass Main{

      public static void main(String[] args) {

              Pondre pond = new Alien();

              pond.reproduire();

      }

      }

      • Partager sur Facebook
      • Partager sur Twitter

      RicoBSJ

        17 octobre 2018 à 11:12:11

        Hello,

        j'ai eu aussi quelques soucis avec ce code via le cours (étant apprenti dev), la solution pour toi semble être de déclarer la classe Alien en Static!

        public class Main {
        
        
        
        
        	public static void main(String[] args) {
        		
            Pondre pond = new Alien();
            pond.reproduire();
        }
         
        public interface Reproduction {
        
        public static void description() {
            System.out.println("Méthode statique dans une interface");
        }
         
        }
         
        public interface Pondre extends Reproduction {
        public static void description() {
                Reproduction.description();
                System.out.println("Redéfinie dans Pondre.java");
        }
             
            default void reproduire() {
                System.out.println("Je ponds des oeufs !");
        }
        }
         
        public interface Mitose extends Reproduction {
        public static void description() {
                Reproduction.description();
                System.out.println("Redéfinie dans Mitose.java");       
        }
             
            default void reproduire() {
                System.out.println("Je me divise !");
        }
        }
         
        public static class Alien implements Pondre, Mitose {
        
        public void reproduire() {
             
                System.out.println("Je suis un alien et :");
                Pondre.super.reproduire();
                Mitose.super.reproduire();
        
        }
        }  
        	}

        Aussi 

        Alien.reproduire(); // ne fonctionne pas

        ne fonctionnera pas je pense car tu essaye d'appeler une classe avec une méthode. (Si j'ai bien suivi les cours :-° )

        Désolé du déterrage, je pense que ca peu aider d'autres élèves!

        • Partager sur Facebook
        • Partager sur Twitter
        Aceman

        Java 8 : interfaces methodes default

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown