Created
October 7, 2025 09:42
-
-
Save sunmeat/b0c7cf8886ed98c32aad830b904dc31b to your computer and use it in GitHub Desktop.
interface example C#
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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