2017-09-13 2 views
-3

En créant une instance de classe parente, nous ne pouvons pas accéder à sa méthode héritée dans un autre paquet car ce n'est pas un héritage direct. Même directement, nous ne pouvons pas utiliser non statique parce que notre méthode enfant est statique alors que la méthode de la classe parent ne l'est pas. exComment accéder à la méthode non statique héritée protégée en méthode statique (ex main method) d'un autre paquet?

package classacees; 

public class Thread1 { 

protected double sub(double a, double b) { 

return (a - b); 

} 

et ...

package example; 

import classacees.Thread1; 

public class Ece extends Thread1 { 

     public static void main(String[] args) { 

double n=sub(3,2); // error -> cant make a static reference to non static method. 
System.out.println(n); 

} 
+0

Pourriez-vous répondre d'abord, pourquoi ne pas créer 'Sub' comme statique et pourquoi utiliser une méthode comme statique dans la classe enfant (dans votre cas 'main')? – nullpointer

+0

On ne sait pas quelle est votre question. – jdv

+0

au lieu de double n = sub (3,2), essayez double n = Thread1.sub (3,2) – Assafs

Répondre

0

d'abord tout ce que vous ne pouvez pas appeler une méthode d'instance directement comme double n=sub(3,2);; pour cela vous avez besoin d'un objet.

Pour votre requête, vous pouvez le faire en accédant à la méthode protégée de l'instance de la classe enfant:

public class Ece extends Thread1 { 
    public static void main(String[] args) { 
     Ece ece = new Ece(); 
     double n = ece.sub(4, 9); 
     System.out.println(n); 
    } 

} 

Hope this helps ..