Abstraction hides unnecessary details and exposes only what’s relevant. Think of it as defining what something should do, but not how.
| Feature | Java | Go |
|---|---|---|
| Abstract type | abstract class or interface |
interface |
| Implementation required | Yes, via subclass | Yes, via struct method receivers |
| Partial implementation | ✅ (abstract + concrete methods) | ❌ (Go interfaces can't have impl) |
| Multiple inheritance? | ✅ via interfaces | ✅ via interfaces |
- Java uses
abstractclasses for shared logic + required methods. - Go uses interfaces only pure abstraction.
- Go prefers composition over inheritance, so interfaces are more central.
📂 See: