Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Created October 7, 2025 09:42
Show Gist options
  • Save sunmeat/b0c7cf8886ed98c32aad830b904dc31b to your computer and use it in GitHub Desktop.
Save sunmeat/b0c7cf8886ed98c32aad830b904dc31b to your computer and use it in GitHub Desktop.
interface example C#
using System.Text;
// рекомендація: перед назвою типу інтерфейсу ставити велику літеру I
// також часто можна зустріти суфікс -able
interface IFlyable
{
void Fly();
}
// зазвичай в інтерфейсі НЕМАЄ ПОЛІВ, немає приватних методів і немає тіл у публічних методів
// інтерфейс — це контракт, що технічно виражено як список прототипів публічних абстрактних методів
// рекомендація з проєктування інтерфейсів: небажано оголошувати в інтерфейсі більше одного методу
interface ITweetable
{
void Tweet();
}
interface ISwimable
{
void Swim();
}
interface IEdible
{
void Eat();
}
abstract class Bird
{
protected string description;
}
// приклад РЕАЛІЗАЦІЇ ІНТЕРФЕЙСУ (інтерфейси НЕ успадковуються, а реалізуються!)
class Pigeon : /*extends*/ Bird, /*implements*/ IFlyable
{
public Pigeon()
{
description = "голуб";
Console.WriteLine("Голуб");
}
public void Fly()
{
Console.WriteLine("махає крилами");
}
}
class Hen : Bird, IEdible
{
public Hen()
{
description = "курка";
Console.WriteLine("Курка");
}
public void Eat()
{
Console.WriteLine("їсть зерно");
}
}
class Airplane : IFlyable
{
public void Fly()
{
Console.WriteLine("вжжжжжжжжжжж");
}
}
class Sparrow : Bird, ITweetable, IEdible
{
private double weight;
public Sparrow()
{
description = "горобець";
weight = 0.02;
}
public void Fly()
{
// відтворення звуку крил
}
public void Tweet()
{
Console.WriteLine("чік-чірік!");
}
public void Eat()
{
weight += 0.01;
}
}
class Penguin : Bird, ISwimable
{
public Penguin()
{
description = "пінгвін";
}
public void Swim()
{
Console.WriteLine("плаває в воді");
}
}
class Program
{
static void Main()
{
Console.OutputEncoding = Encoding.UTF8;
// IFlyable test = new IFlyable(); // об'єкти типу інтерфейсу створити не вдасться - створюються тільки вказівники та посилання!
var kurlyk = new Pigeon();
kurlyk.Fly();
var hen = new Hen();
hen.Eat();
var plane = new Airplane();
plane.Fly();
var sparrow = new Sparrow();
sparrow.Tweet();
sparrow.Eat();
var penguin = new Penguin();
penguin.Swim();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment