LoginSignup
1
0

More than 3 years have passed since last update.

scalaのtrait, abstract class, class, objectについて理解を深める

Posted at

背景

scalaに触れていく中で、traitとclassの違いってなんや!objectってどこでどんな風に使うんや!ってなったので自分なりの理解を残しておきます。

抽象と具体

これらの理解を深めるために抽象的なものと具体的なものに分けようと思います。
プログラミング的に抽象的なものとしては全体として知っている知識、具体的なものとしてはその具体実装を指します。

抽象

タイトルで示した4つのうち、traitとabstract classが抽象的なものに当たります。

具体

具体にはclassとobjectが入ります。

違い

ほんならそれらの違いってなんやねん!となると思うのですが、説明していきます。

trait => can doの関係
abstract class => is a の関係

という説明を受けてなるほど!となりました。
つまり、"犬は吠えることができる"なのか"犬は動物だ"なのかの違いですね。
このように抽象的なものを使い分けることができます。

class => newしてあげる必要があり、いっぱい作れる
object => singletonなもの。唯一定義してあげたいもの。

のような違いがあります。

このような認識で今後は使い分けていきたい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0