abstract java override