, , , , , , ? , , . , , , , , , ?
Java ( , ), . , .
, . , , . , superClassOrInterfaceType ( , . , ) , , , , superClassOrInterfaceType, , subtypeClassOrInterfaceTypes, : , , . , superClassOrInterfaceType subtypeClassOrInterfaceTypes.
, superClassOrInterfaceType , . , subtypeClassOrInterfaceTypes. , , , superClassOrInterfaceType , . , , , . SubClipOrInterfaceTypes, .
, , , , . , .
, , , , . , , , . : Java . , .
To summarize, you usually want to define the behavior (what the objects will do) with interfaces, and not in abstract classes. Abstract classes focus on implementation hierarchies and code reuse.
Here are some links that are more relevant to this issue.
Thanks Type and Gentle Class
The magic behind subtype polymorphism
Maximize flexibility with interfaces and abstract classes
Interfaces against abstract classes in Java