इस उदाहरण में जावा वेबसाइट के ट्यूटोरियल page पर। दो इंटरफेस एक ही डिफ़ॉल्ट विधि startEngine()
परिभाषित करते हैं। एक वर्ग FlyingCar
दोनों इंटरफेस लागू करता है और स्पष्ट संघर्ष के कारण startEngine()
को ओवरराइड करना होगा।इस जावा उदाहरण में "सुपर" कीवर्ड के बारे में उलझन में
public interface OperateCar {
// ...
default public int startEngine(EncryptedKey key) {
// Implementation
}
}
public interface FlyCar {
// ...
default public int startEngine(EncryptedKey key) {
// Implementation
}
}
public class FlyingCar implements OperateCar, FlyCar {
// ...
public int startEngine(EncryptedKey key) {
FlyCar.super.startEngine(key);
OperateCar.super.startEngine(key);
}
}
मुझे समझ नहीं आता क्यों, FlyingCar
से, super
OperateCar
और FlyCar
इंटरफेस में startEngine()
के दोनों संस्करणों के लिए किया जाता रहा है। जैसा कि मैं इसे समझता हूं, startEngine()
किसी भी सुपर क्लास में परिभाषित नहीं किया गया था, इसलिए इसे एक में निवासी के रूप में संदर्भित नहीं किया जाना चाहिए। मैं भी super
और दो इंटरफेस के बीच किसी भी रिश्ते FlyingCar
' सुपर 'अपने आप से सुपरक्लास का मतलब है। जावा 8 में 'FlyCar.super' नया है, और इंटरफ़ेस' FlyCar' में कार्यान्वयन का मतलब है। – immibis
देखें http://stackoverflow.com/questions/19976487/explicitly-calling-a-default-method-in-java – Eran
उदाहरण कोड को निकालने के बजाय आप उस ट्यूटोरियल को क्यों नहीं पढ़ते? – Holger