Java初心者です。

import java.util.*;

class ListTest{
  MyClass m1 = new MyClass("hoge");
  MyClass m2 = new MyClass("fuga");

  List<MyClass>      list1  = new ArrayList<>(Arrays.asList(m1, m2)); //OK    
  ArrayList<MyClass> list2  = new ArrayList<MyClass>(Arrays.asList(m1, m2)); //OK
  MyArrayList        mylist = new MyArrayList(Arrays.asList(m1, m2)); //NG
}

class MyArrayList extends ArrayList<MyClass>{
  // MyClassのListに対する処理
}

class MyClass{
  MyClass(String s){}
}

このコードをコンパイルすると、

ListTest.java:9: エラー: クラス MyArrayListのコンストラクタ MyArrayListは指定された型に適用できません。
  MyArrayList      mylist = new MyArrayList(Arrays.asList(m1, m2)); //NG
                            ^
  期待値: 引数がありません
  検出値: List<MyClass>
  理由: 実引数リストと仮引数リストの長さが異なります
エラー1個

と言われてしまいます。
MyArrayListArrayList<MyClass>を継承し、コンストラクタのオーバーロードもしていないのですが、なぜArrayList<MyClass>と同じコンストラクタが使えないのでしょうか。
インタフェースについて何か初歩的なところで躓いている気はするのですがどこが悪いのかわかりません。

また、とりあえず

MyArrayList mylist = new MyArrayList();
mylist.addAll(Arrays.asList(m1,m2));

とすることでやりたかったことはできているのですが、そもそもこのArrayListextendするやり方自体が変なやり方なのでしょうか?