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

# メソッドの多重定義

一般的な言語では同名の関数の定義をすることはできません。\
しかしオブジェクト指向では、引数・戻り値の型が異なれば同じ名前のメソッドの定義を行える\
「オーバーロード」がサポートされています\
オーバーロード行うために必要になるキーワードはありません。\
呼び出しも引数の型を見て自動的に切り替わります　

```
構文:
    member メソッド1(<引数>)=処理...
    member メソッド2(<引数*>)=処理...
    ...
```

```fsharp
//xとyを加算するoversクラス
type overs()=
    member _.add(x:int,y:int)=x+y    
    member _.add(x:float,y:float)=x+y
    member _.add(x:string,y:string)=x+y
//->int,floatなら加算、stringなら文字列結合を行う


//呼び出し
let box=overs()
printfn "%d" <|box.add(2,3)
printfn "%f" <|box.add(2.0,3.0)
printfn "%s" <|box.add("2.0+","3.0")


//出力結果:
//5
//5.000000
//2.0+3.0
```
