Реализация интерфейсов

Последнее обновление: 03.05.2024

C#

Dart

F#

Kotlin

Rust

C#

Rectangle rect = new();
MoveObject(rect);   // Перемещаем прямоугольник
DrawObject(rect);   // Рисуем прямоугольник

void MoveObject(Movable obj){
    obj.Move();
}
void DrawObject(Drawable obj){
    obj.Draw();
}
// интерфейс перемещения объекта
interface Movable{
    void Move();
}
// интерфейс отрисовки объекта
interface Drawable{
    void Draw();
}
class Rectangle : Movable, Drawable{

    public void Move() => Console.WriteLine("Перемещаем прямоугольник");
    public void Draw() => Console.WriteLine("Рисуем прямоугольник");
}

Dart

// интерфейс перемещения объекта
abstract interface class Movable{
    void move();
}
// интерфейс отрисовки объекта
abstract interface class Drawable{
    void draw();
}
class Rectangle implements Movable, Drawable{

    @override
    void move() =>print("Перемещаем прямоугольник");
    @override
    void draw()=>print("Рисуем прямоугольник");
}

void main (){

    Rectangle rect = Rectangle();
    moveObject(rect);   // Перемещаем прямоугольник
    drawObject(rect);   // Рисуем прямоугольник
}
void moveObject(Movable obj){
    obj.move();
}
void drawObject(Drawable obj){
    obj.draw();
}

F#

// интерфейс перемещения объекта
type Movable =
    abstract member Move: unit -> unit

// интерфейс отрисовки объекта
type Drawable =
    abstract member Draw: unit -> unit

type Rectangle() = 
    interface Movable with
        member this.Move() = printfn "Перемещаем прямоугольник"
    interface Drawable with
        member this.Draw() = printfn "Рисуем прямоугольник" 

let moveObject(obj: Movable) = obj.Move()

let drawObject(obj: Drawable) = obj.Draw()

let rect = Rectangle()
moveObject rect  // Перемещаем прямоугольник
drawObject rect   // Рисуем прямоугольник

Kotlin

fun main() {
    val rect = Rectangle()
    moveObject(rect) // Перемещаем прямоугольник
    drawObject(rect) // Рисуем прямоугольник
}
fun moveObject(obj: Movable) = obj.move()
fun drawObject(obj: Drawable) = obj.draw()

// интерфейс перемещения объекта
interface Movable{
    fun move()
}
// интерфейс отрисовки объекта
interface Drawable{
    fun draw()
}
class Rectangle : Movable, Drawable{
    override fun move() = println("Перемещаем прямоугольник");
    override fun draw() = println("Рисуем прямоугольник");
}

Rust

В Rust нет такой концепции как интерфейсы, но есть похожий тип определения функционала - трейты, который позволяют применять сценарии, аналогичные интерфейсам:

fn main(){
     
    let rect = Rectangle{};
    move_object(&rect); // Перемещаем прямоугольник
    draw_object(&rect); // Рисуем прямоугольник
}


fn move_object(obj: &impl Movable) {obj.moves();}
fn draw_object(obj: &impl Drawable) { obj.draws();}

// интерфейс перемещения объекта
trait Movable{
    fn moves(&self);
}
// интерфейс отрисовки объекта
trait Drawable{
    fn draws(&self);
}
struct Rectangle{}

impl Movable for Rectangle{
    fn moves(&self) { println!("Перемещаем прямоугольник");}
}
impl Drawable for Rectangle{
    fn draws(&self) {println!("Рисуем прямоугольник");}
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850