Skip to content

Instantly share code, notes, and snippets.

@dsibinski
Last active February 17, 2019 21:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dsibinski/883f8f3b867572d9108ebe2048d62ee2 to your computer and use it in GitHub Desktop.
Save dsibinski/883f8f3b867572d9108ebe2048d62ee2 to your computer and use it in GitHub Desktop.
interface IDeveloper
{
void LearnNewLanguage(string language)
{
Console.Write($"Learning {language} in a default way.");
}
}
interface IBackendDev : IDeveloper
{
void LearnNewLanguage(string language)
{
Console.Write($"Learning {language} in a backend way.");
}
}
interface IFrontendDev : IDeveloper
{
void LearnNewLanguage(string language)
{
Console.Write($"Learning {language} in a frontend way.");
}
}
interface IFullStackDev : IBackendDev, IFrontendDev { } // uses default implementation,
// of LearnNewLanguage, but which one?
class Dev : IFullStackDev { }
class Program
{
static void Main(string[] args)
{
IFullStackDev dev = new Dev();
dev.LearnNewLanguage("TypeScript"); // which method is called? The one
// from IBackendDev or IFrontendDev?
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment