1.same access specifier or wider access specifier2.in the case of primitive data type as return type we keep same return type if reference type we can keep any one3.no of arguments are equal and same datatypes4.we can't throw new checked exceptions are super class exception