C#
Dart
F#
Kotlin
Rust
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("Рисуем прямоугольник"); }
// интерфейс перемещения объекта 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(); }
// интерфейс перемещения объекта 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 // Рисуем прямоугольник
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 нет такой концепции как интерфейсы, но есть похожий тип определения функционала - трейты, который позволяют применять сценарии, аналогичные интерфейсам:
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!("Рисуем прямоугольник");} }