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

# Abstract type

```ruby
class A {
    # must be filled in by the class which will inherit it
    method abstract() { die 'Unimplemented' };
 
    # can be overridden in the class, but that's not mandatory
    method concrete() { say '# 42' };
}
 
class SomeClass << A {
    method abstract() {
        say "# made concrete in class"
    }
}
 
var obj = SomeClass.new;
obj.abstract();   # made concrete in class
obj.concrete();   # 42
```
