> For the complete documentation index, see [llms.txt](https://jazz-lang.gitbook.io/jazz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jazz-lang.gitbook.io/jazz/interfaces.md).

# Interfaces

Interfaces are types that specify a set of member functions. Struct types can implement an interface by listing the interface name after a colon following the struct name, and providing the member functions required by the interface:

```fsharp
interface Foo {
    fun foo(): int;
     
    fun fooDefault(): int { // default function that can be overrided
        return -1; 
    }
}

struct Bar: Foo {
    fun foo(): int {
        return 0;    
    }
    
    fun fooDefault(): int {
        return foo();
    }
}
```
