A method cannot be abstract and final at the same time.
A non-abstract method (like test1()) must provide an implementation
Note that we are talking about abstract methods in a class, not in an interface.
The are some differences between an abstract method inside a class and inside an interface :
1) In an interface no explicit abstract modifier is needed, because by default all methods are abstract. Which is not the case for an abstract method in a class (must be explicitly marked abstract)
2) An abstract method in an interface cannot be marked protected (only public or no modifier are allowed). In a class, an abstract method can be marked protected