I have a class called CoordMediaPlayer that inherits from MediaPlayer. My CoordMediaPlayer must be able to use the MediaPlayer methods so It's why I use inheritance...
The problem is that to instanciate a MediaPlayer it must use a MediaPlayer.create() static method. It's not like if it just calls a constructor and then I can use method of the parent class normally. If I inherit from MediaPlayer I can't access to the create() method from a class that inherit MediaPlayer I guess because it's static method, I can't Override it.
In ideal I would want to have my CoordMediaPlayer, this CoordMediaPlayer would not contains a MediaPlayer object but I would be able to call all MediaPlayer methods directly from a CoordMediaPlayer instance. It would be still better if I don't have the same kind of static create() method in my CoordMediaPlayer, this creation would be done when I instanciate my CoordMediaPlayer.
The only one way I found to deal with this, is to have a MediaPlayer object in my CoordMediaPlayer, then my CoordMediaPlayer inherit from MediaPlayer and override all the methods I need just by calling the method of my MediaPlayer object... but that looks kind of weird to me... is there any other way to deal with this kind of situation, without having a MediaPlayer in my CoordMediaPlayer but call directly my inherited MediaPlayer methods ? 
This is how I deal with this, my CoordMediaPlayer class inherit from MediaPlayer and at the same time contains an instance of a MediaPlayer and have to override all methods of MediaPlayer I want to use...
Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    context = getApplicationContext();
    int fileResId = context.getResources().getIdentifier("s2", "raw", context.getPackageName());
    CoordMediaPlayer cmp = new CoordMediaPlayer(context,fileResId);
    cmp.start();
}
CoordMediaPlayer
public class CoordMediaPlayer extends MediaPlayer  {
    private MediaPlayer mediaPlayer;
    private Point coordinates;
    @Override
    public void start() throws IllegalStateException {
        mediaPlayer.start();
    }
    public CoordMediaPlayer(Context context, int resId) {
        mediaPlayer = MediaPlayer.create(context,resId);
    }
    public void setCoordinates(Point coordinates) {
        this.coordinates = coordinates;
    }
    public Point getCoordinates() {
        return coordinates;
    }
}
 
    