kan ik expliciet een interfacemethode in java noemen? Zo niet, is er dan een oplossing voor?

public class a implements b,c {

    public void g()
    {

    }

    public static void main(String[] args){

              a object =new a(); //this overrides for both the methods in            
                               //the interfaces b and c
          object.g();

    }

}
interface b 
{
    void g();
}
interface c
{
    void g();
}

Hier wil ik verschillende implementaties bieden voor de twee interfaces. Hoe doe ik het. In C# kun je expliciet opgeven dat de overschreven methode bedoeld is voor welke interface. Kan ik dat doen in java. Als dit probleem niet met een eenvoudig voorbeeld wordt opgelost, geef dit dan alsjeblieft aan.

Wat ik wil kan op deze manier worden vermeld ... stel dat de interfaces bedoeld zijn voor één afstandsbediening (interface b) en een interne VCD-speler op afstand (interface c) ... en wanneer ik de functies van beide in één afstandsbediening implementeer ( klasse a in dit geval) Ik wil verschillende implementatie voor de TV en de VCD bieden voor dezelfde knop waarop op de afstandsbediening is geklikt (methode g() in dit geval). Wanneer ik g() vervang, wordt deze voor beide interfaces opgeheven. Hoe geef ik expliciet aan voor welke interface het is bedoeld. Ik wil verschillende implementaties bieden (door g ()) op te heffen voor tv en vcd-speler.

EX. de rechterrichtingsknop werkt als kanaalwisseling voor tv, maar dezelfde knop werkt als skip-knop voor VCD

1
Kun je een voorbeeld geven dat compileert met twee implementaties die je wilt bellen?
toegevoegd de auteur Peter Lawrey, de bron

1 antwoord

Dit is het antwoord op de bewerkte vraag:

  1. Een interface zegt eenvoudigweg: "deze klasse implementeert methode X." Het maakt niet uit hoeveel interfaces die dezelfde methode verklaren die u in een klasse hebt geplaatst, het resultaat is nog steeds hetzelfde: "deze klasse implementeert methode X."

  2. In uw geval ligt het probleem bij het conceptontwerp. Het gedrag van de knop is eigenlijk hetzelfde, of het nu op een tv of VCD staat: het activeert een actie als erop wordt gedrukt. Dat zou het gedrag van uw methode moeten zijn: zoek een actie die hoort bij de ingedrukte knop en voer deze uit. Zie je hoe het in dit geval hetzelfde zal zijn voor TV en VCD? Nu is de klasse die het actiegedrag inkapselt anders. Mogelijk hebt u een aantal van deze klassen: b. TVChannelChangeAction, Skip30SecAction, etc.

0
toegevoegd
De laatste zin van die paragraaf zegt: "In Java is er geen manier om dit probleem op te lossen, behalve het opschonen van de code en het herdefinië ren van een of meer van de interfaces om naamclashes te voorkomen. " In deze situaties dwingt Java de ontwikkelaar tot een ontwerp dat een duidelijkere scheiding van zorgen implementeert.
toegevoegd de auteur Dmitry B., de bron
opnieuw "er is geen manier om dit probleem op te lossen, behalve het opschonen van de code en het opnieuw instellen van een of meer van de interfaces om naamclashes te voorkomen"
toegevoegd de auteur Dmitry B., de bron
wat ik wil bereiken is expliciete interface-implementatie..kan ik dit in Java bereiken via een tijdelijke oplossing .... hier is een link naar wat ik wil kijk dan in de kolomnaam "Expliciete interface-implementatie" in deze link en.wikipedia.org/wiki/…
toegevoegd de auteur Nav, de bron
daarom vroeg ik of er een oplossing is ... want er is een oplossing voor alles wat ik geloof;)
toegevoegd de auteur Nav, de bron
ok ... dus ik zal de methode namen voor dat recht anders moeten noemen ???
toegevoegd de auteur Nav, de bron