I am confused about abstract classes and abstract methods 
In Java, it is possible to create superclasses which enable its subclasses to access its methods (if the methods are protected or public). The use of a superclass is that it lessens the amount of code in the subclasses since you can put the very similar methods that the subclasses have in common into one class, which they can all access.
You can then make the superclass abstract, but then that defeats the point of having the superclass. If the superclass is abstract then you can create abstract methods. The abstract methods ensure that the subclasses have those methods implemented in their class, which seems good. However, as I said before, if the subclasses have very similar methods then wouldn't you want the superclass to hold this method rather than enforce it on each of them. This seems to confuse me greatly.
Can anyone shed some light on the topic?

In Java, it is possible to create superclasses which enable its subclasses to access its methods (if the methods are protected or public). The use of a superclass is that it lessens the amount of code in the subclasses since you can put the very similar methods that the subclasses have in common into one class, which they can all access.
You can then make the superclass abstract, but then that defeats the point of having the superclass. If the superclass is abstract then you can create abstract methods. The abstract methods ensure that the subclasses have those methods implemented in their class, which seems good. However, as I said before, if the subclasses have very similar methods then wouldn't you want the superclass to hold this method rather than enforce it on each of them. This seems to confuse me greatly.
Can anyone shed some light on the topic?
Comment