2012-06-14 16 views
6

के साथ "विरासत में मिला विधि की दृश्यता को कम नहीं किया जा सकता" मैं दो फ़ाइलें:का अर्थ एक अंतरफलक

public interface PrintService { 
    void print(PrintDetails details); 
    class PrintDetails { 
     private String printTemplate; 
    } 
    public interface Task { 
     String ACTION = "print"; 
    } 
} 

और

public class A implements PrintService { 
    void print(PrintDetails details) { 
     System.out.println("printing: " + details); 
    } 
    String action = PrintService.Task.ACTION; 
} 

मैंने सोचा था कि कोड ठीक लग रहा है, लेकिन मैं एक हो रही है void print(PrintDetails details) { लाइन के लिए दूसरी फ़ाइल में त्रुटि जो बताती है:

से विरासत विधि की दृश्यता को कम नहीं कर सकता।

कोई बता सकता है कि मेरे लिए इसका क्या अर्थ है?

उत्तर

21

एक जावा इंटरफ़ेस प्रत्येक विधि है में डिफ़ॉल्ट public द्वारा:

तो उसके शरीर हमेशा अर्धविराम, नहीं एक ब्लॉक का प्रतिनिधित्व करती है एक इंटरफेस के शरीर में हर विधि घोषणा, परोक्ष सार है।

इंटरफ़ेस के शरीर में प्रत्येक विधि की घोषणा पूरी तरह से सार्वजनिक है। [..]

एक कार्यान्वयन वर्ग में आप दृश्यता कम करने के लिए अनुमति दी जाती है नहीं, और एक पहुँच संशोधक निर्दिष्ट नहीं द्वारा:

void print(){..} 

आप पहुँच स्तर default, जो public की तुलना में कम दृश्यता है निर्दिष्ट करते हैं।

2

कक्षा में मेथोड सार्वजनिक बनाएं जिसमें इंटरफ़ेस लागू होता है, क्योंकि डिफ़ॉल्ट रूप से इंटरफ़ेस में प्रत्येक विधि सार्वजनिक और सार होती है।

संबंधित मुद्दे