2014-12-25 18 views
5

Aynı varsayılan yönteme sahip iki arabirim varsa ve her ikisi de bir sınıfla/bu programı görüyorsa.İki arabirim aynı varsayılan yöntemi içeriyorsa ne olur?

interface alpha { 
    default void reset() { 
    System.out.println("This is alpha version of default"); 
    } 
} 

interface beta { 
    default void reset() { 
    System.out.println("This is beta version of default"); 
    } 
} 

class MyClass implements alpha, beta { 
    void display() { 
    System.out.println("This is not default"); 
    } 
} 

class main_class { 
    public static void main(String args[]) { 
    MyClass ob = new MyClass(); 
    ob.reset(); 
    ob.display(); 
    } 
} 

O zaman ne olacak? Ve ayrıca bu program ile ilgisiz bir hata alıyorum.

+0

Arabirim, salt soyutdur ve yalnızca bildirimler değildir. – Shriram

+0

@Shriram Java 8'de varsayılan yöntemler –

+4

'u kullanarak uygulamalar içerebilirler. "İlişkili olmayan hataların" bu sorunun cevabını verdiğinden şüpheleniyorum. – chrylis

cevap

6

Birden arayüzleri (çocuk sınıfta açıkça geçersiz kılma olmadan) Java 8 varsayılan yöntemlerin aynı imzaya sahip olan

uygulayamaz. Yöntemi uygulayarak çözebilirsiniz E.g.

class MyClass implements alpha, beta { 
    void display() { 
    System.out.println("This is not default"); 
    } 

    @Override 
    public void reset() { 
    //in order to call alpha's reset 
    alpha.super.reset(); 
    //if you want to call beta's reset 
    beta.super.reset(); 

    } 
} 
+0

Yukarıdaki kodu '@ override' yöntemiyle çalıştırmaya çalıştığımda, hata alıyorum '@ override' simgesini bulamıyor. –

+0

@ManoharKumar '@ Override' bir başucudur O. – 11684

+0

Yani sıfırlama() yönteminin alfa sürümünü çağırmak için, yöntem @ public_hide public void reset() {} 'kodunda kullanmak zorunda olduğumuz yöntemi uygular. –

0

Aslında, bu iki yöntemin yalnızca bir yöntemi olsun, them.If sen mesela IntelliJ içinde iki yöntem uygulamaya çalışıyorum uygulayan sınıfta aynıdır. İkisi için farklı imzalara sahip olmak isteyip istemediğinizi bile ilan edemezsiniz.

İlgili konular