abstract classとtraitって
どう使い分ければいいでしょうか?