Java Interview Questions and Answers
1. Difference between Compile-time Polymorphism and Runtime
Polymorphism
Compile-time Polymorphism (Method Overloading):
- Occurs when multiple methods in the same class have the same
name but different parameters.
- It is resolved at compile time.
Example:
class MathOperations {
int add(int a, int b) { return a + b; }
int add(int a, int b, int c) { return a + b + c; }
}
public class Test {
public static void main(String[] args) {
MathOperations obj = new MathOperations();
System.out.println(obj.add(5, 10)); // Calls 2-parameter add()
System.out.println(obj.add(5, 10, 15)); // Calls 3-parameter add()
}
}
Runtime Polymorphism (Method Overriding):
- Occurs when a subclass provides a specific implementation of a
method already defined in its parent class.
- It is resolved at runtime using dynamic method dispatch.
Example:
class Parent {
void show() { System.out.println("Parent class"); }
}
class Child extends Parent {
void show() { System.out.println("Child class"); }
}
public class Test {
public static void main(String[] args) {
Parent obj = new Child(); // Upcasting
obj.show(); // Calls Child's show() at runtime
}
}
2. Significance of 'super' Keyword in Java
- The 'super' keyword refers to the parent class and is used to call the
parent class's constructor, methods, or variables.
Example:
class Parent {
Parent() { System.out.println("Parent constructor"); }
void display() { System.out.println("Parent method"); }
}
class Child extends Parent {
Child() { super(); System.out.println("Child constructor"); }
void display() { super.display(); System.out.println("Child
method"); }
}
public class Test {
public static void main(String[] args) {
Child obj = new Child();
obj.display();
}
}
3. Single Inheritance vs. Multilevel Inheritance
Single Inheritance:
class Animal {
void sound() { System.out.println("Animal makes a sound"); }
}
class Dog extends Animal {
void bark() { System.out.println("Dog barks"); }
}
Multilevel Inheritance:
class Animal {
void sound() { System.out.println("Animal makes a sound"); }
}
class Mammal extends Animal {
void walk() { System.out.println("Mammal walks"); }
}
class Dog extends Mammal {
void bark() { System.out.println("Dog barks"); }
}
4. Static vs. Instance vs. Local Variables
- Static variables belong to the class and are shared among all
objects.
- Instance variables belong to an object and are unique per object.
- Local variables exist only within a method.
Example:
class Example {
static int staticVar = 10;
int instanceVar = 20;
void method() { int localVar = 30; }
}
5. Java Program for Static Variables
class Counter {
static int count = 0;
Counter() { count++; }
void display() { System.out.println("Count: " + count); }
}
public class Test {
public static void main(String[] args) {
Counter c1 = new Counter();
Counter c2 = new Counter();
c1.display(); c2.display();
}
}
(Complete answers to all 16 questions included in the PDF...)