0% found this document useful (0 votes)
2 views

Java_Abstract_vs_Interface_Summary

Uploaded by

Nithin Kudupudi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Java_Abstract_vs_Interface_Summary

Uploaded by

Nithin Kudupudi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

Java: Abstract Classes, Interfaces, and Related Concepts

=========================================================

1. Abstract Class Basics


------------------------
- An abstract class cannot be instantiated directly.
- It can contain:
- Abstract methods (without body)
- Concrete methods (with body)
- Constructors
- Instance variables and static variables
- Used when:
- You want to share common code among subclasses.
- The class has state (fields) to be inherited.
- You need non-static or non-public methods.

Example:
abstract class Animal {
String name;
Animal(String name) {
this.name = name;
}
abstract void sound();
void eat() {
System.out.println("Eating...");
}
}

2. Constructors in Abstract Classes


-----------------------------------
- Abstract classes can have constructors.
- These constructors are called when subclass objects are created.

Example:
abstract class Animal {
Animal() {
System.out.println("Animal constructor");
}
}
class Dog extends Animal {
Dog() {
System.out.println("Dog constructor");
}
}

3. Anonymous Inner Classes


--------------------------
- Anonymous class: unnamed class created for one-time use.
- Commonly used to extend abstract classes or implement interfaces on the spot.

Example:
Animal a = new Animal() {
void sound() {
System.out.println("Bark from anonymous class");
}
};

4. Interface vs Abstract Class


------------------------------
| Feature | Abstract Class | Interface
|
|--------------------------|-------------------------------------|-----------------
--------------------|
| Method types | Abstract + Concrete | Abstract,
default, static (Java 8+) |
| Constructors | Allowed | Not allowed
|
| Fields | Instance, static, final | public static
final (constants) |
| Access modifiers | Any | Only public
(methods are public) |
| Inheritance | Single | Multiple
|
| Use case | Code reuse, base class | Capability
declaration |

5. Java 8+ Interface Enhancements


---------------------------------
- Interfaces can have:
- `default` methods (with body)
- `static` methods
- `private` methods (Java 9+)
- Purpose: backward compatibility without breaking existing implementations.

6. Default Method vs Abstract Class Method


------------------------------------------
| Aspect | Default Method (Interface) | Method in
Abstract Class |
|----------------------------|----------------------------------|------------------
-------------------|
| Can access instance fields | No | Yes
|
| Constructors | No | Yes
|
| Access modifiers | Only public | public,
protected, private allowed |

7. Fields in Interface
----------------------
- Allowed but treated as:
- public
- static
- final

Example:
interface Config {
int TIMEOUT = 5000; // implicit public static final
}

8. Multiple Inheritance with Interface


--------------------------------------
class MyClass implements InterfaceA, InterfaceB {
// Implement all methods
}

9. Method Conflict Resolution


-----------------------------
interface A { default void show() { } }
interface B { default void show() { } }

class C implements A, B {
public void show() {
A.super.show(); // or B.super.show()
}
}

You might also like