Java OOPs MCQ (Multiple Choice Questions)

Object-Oriented Programming (OOP) is a fundamental concept in Java programming that allows developers to organize code into reusable, modular components. Understanding Java OOPs concepts is essential for building robust and maintainable applications. 
 
Learn everything about OOPs in Java: Object Oriented Programming in Java


This blog post presents a quiz consisting of 10+ multiple-choice questions (MCQs) to test your knowledge of Java OOPs concepts. Each question is followed by the correct answer and a detailed explanation. 

Let's dive into the quiz!

1. What is encapsulation in Java? 

a) The process of combining data and methods into a single unit 
b) The process of hiding data and methods within a class 
c) The process of creating multiple instances of a class 
d) The process of reusing code from existing classes 

Answer: 

a) The process of combining data and methods into a single unit

Explanation: 

Encapsulation is a mechanism in Java that bundles data and methods together within a class and restricts access to the data by using access modifiers. It allows for data hiding, protecting the internal state of an object and ensuring that it can only be accessed through defined methods. 

2. What is inheritance in Java? 

a) The process of creating multiple instances of a class 
b) The process of hiding data and methods within a class 
c) The process of reusing code from existing classes 
d) The process of combining data and methods into a single unit 

Answer: 

c) The process of reusing code from existing classes 

Explanation: 

Inheritance is a mechanism in Java that allows a class to inherit properties and behaviors from another class. It promotes code reuse by enabling the creation of subclasses that inherit the attributes and methods of a superclass. Subclasses can also add their own unique attributes and methods. 

3. What is the difference between method overloading and method overriding in Java? 

a) Method overloading occurs within the same class, while method overriding occurs between different classes. 
b) Method overloading involves creating multiple methods with the same name but different parameters, while method overriding involves providing a different implementation for an inherited method.
c) Method overloading is a compile-time polymorphism concept, while method overriding is a runtime polymorphism concept. 
d) All of the above. 

Answer: 

d) All of the above. 

Explanation: 

All the statements are true. Method overloading allows the definition of multiple methods with the same name but different parameters within the same class. Method overriding occurs when a subclass provides a different implementation for a method that is already defined in its superclass. Method overloading is resolved at compile-time, while method overriding is resolved at runtime. 

4. What is polymorphism in Java? 

a) The ability of a class to inherit properties and behaviors from another class 
b) The process of hiding data and methods within a class 
c) The process of creating multiple instances of a class 
d) The ability of an object to take on many forms 

Answer: 

d) The ability of an object to take on many forms 

Explanation: 

Polymorphism refers to the ability of an object to take on many forms or have multiple behaviors. In Java, polymorphism is achieved through method overriding and method overloading. It allows objects of different classes to be treated as objects of a common superclass, providing flexibility and extensibility. 

5. What are abstract classes in Java? 

a) Classes that cannot be instantiated 
b) Classes that can be used as blueprints for creating objects 
c) Classes that only contain abstract methods 
d) All of the above 

Answer: 

d) All of the above 

Explanation: 

Abstract classes in Java cannot be instantiated directly and are typically used as blueprints for creating objects. They can contain abstract methods (methods without implementation) and regular methods. Abstract classes provide a way to define common behavior and enforce specific methods to be implemented by subclasses. 

6. What is the purpose of the "super" keyword in Java? 

a) To refer to the current object 
b) To invoke the superclass constructor or methods 
c) To create multiple instances of a class 
d) To hide data and methods within a class 

Answer: 

b) To invoke the superclass constructor or methods 

Explanation: 

The "super" keyword in Java is used to refer to the superclass (or parent class) of the current object. It is commonly used to invoke the superclass constructor or methods within the subclass. The "super" keyword allows for code reuse and accessing superclass members that may be overridden in the subclass. 

7. What is the difference between a class and an object in Java? 

a) A class is a blueprint for creating objects, while an object is an instance of a class. 
b) A class is a single entity, while an object is a collection of entities. 
c) A class contains data and methods, while an object only contains data. 
d) A class cannot be instantiated, while an object can be created and used. 

Answer: 

a) A class is a blueprint for creating objects, while an object is an instance of a class. 

Explanation: 

A class in Java is a template or blueprint that defines the structure and behavior of objects. It specifies the attributes (data) and methods that objects of that class will have. An object, on the other hand, is an instance of a class. It represents a specific entity or instance created based on the class blueprint. 

8. What is the purpose of the "this" keyword in Java? 

a) To refer to the superclass 
b) To create multiple instances of a class 
c) To hide data and methods within a class 
d) To refer to the current object 

Answer: 

d) To refer to the current object 

Explanation: 

The "this" keyword in Java is used to refer to the current object within an instance method or constructor. It is often used to distinguish between instance variables and method parameters or to access methods and variables of the current object. 

9. What is method overriding in Java? 

a) Creating multiple methods with the same name but different parameters within the same class. 
b) Providing a different implementation for an inherited method in a subclass. 
c) Hiding data and methods within a class.
d) Allowing a class to inherit properties and behaviors from another class. 

Answer: 

b) Providing a different implementation for an inherited method in a subclass. 

Explanation: 

Method overriding occurs when a subclass provides a different implementation for a method that is already defined in its superclass. The method in the subclass must have the same name, return type, and parameters as the superclass method. Method overriding allows for polymorphism and dynamic method dispatch. 

10. What is the purpose of the "final" keyword in Java? 

a) To prevent the inheritance of a class 
b) To prevent overriding of a method 
c) To prevent modification of a variable's value 
d) All of the above 

Answer: 

d) All of the above 

Explanation: 

The "final" keyword in Java can be used to prevent the inheritance of a class, overriding of a method, or modification of a variable's value. When a class, method, or variable is declared as final, it cannot be further extended, overridden, or modified, respectively. 

11. What is the purpose of the "abstract" keyword in Java? 

a) To prevent the inheritance of a class 
b) To prevent overriding of a method 
c) To create an instance of a class 
d) To declare an abstract class or method 

Answer: 

d) To declare an abstract class or method 

Explanation: 

The "abstract" keyword in Java is used to declare an abstract class or method. An abstract class cannot be instantiated and serves as a blueprint for creating derived classes. An abstract method does not have an implementation and must be overridden in the subclass. 

12. What is the difference between static and instance variables in Java? 

a) Static variables are associated with the class itself, while instance variables are associated with an instance of a class.
b) Static variables are shared among all instances of a class, while instance variables have separate values for each instance. 
c) Static variables can be accessed without creating an object, while instance variables require an object reference. 
d) All of the above. 

Answer: 

d) All of the above. 

Explanation: 

In Java, a static variable is a variable that belongs to the class rather than any particular object instance. It gets memory only once, during class loading. On the other hand, instance variables are non-static and are declared in a class outside any method, constructor, or block. They get memory each time an instance of the class is created.

The static variables are associated with a class rather than any particular instance, they are shared across all instances of the class. Meaning, that if you change the value of a static variable in one instance, the value gets reflected in all other instances. In contrast, each instance of a class has its own copy of instance variables, allowing them to have unique values for each object.

Static variables belong to the class, so they can be accessed using the class name without the need to create an instance of the class. Instance variables, on the other hand, require an object to be instantiated for them to be accessed. You need to create an instance (or object) of the class to access or modify instance variables.

13. What is the concept of data hiding in Java? 

a) Encapsulating data within a class and providing controlled access through methods 
b) Making data accessible to all classes in the program 
c) Storing data in a central repository accessible to multiple classes 
d) Restricting access to data within a specific package 

Answer: 

a) Encapsulating data within a class and providing controlled access through methods 

Explanation: 

Data hiding in Java involves encapsulating data within a class and providing controlled access to it through methods. It ensures that the internal state of an object is protected and can only be accessed or modified using defined methods, maintaining data integrity and security.

14. What is the output of the following Java program?

public class Vehicle {
    public void move() {
        System.out.println("The vehicle moves");
    }
}

public class Car extends Vehicle {
    public void move() {
        System.out.println("The car moves");
    }
}

public class Main {
    public static void main(String[] args) {
        Vehicle vehicle = new Car();
        vehicle.move();
    }
}
A. "The vehicle moves" 
B. "The car moves" 
C. The code does not compile 
D. None of the above 

Answer: 

B. "The car moves" 

Explanation: 

In Java, a subclass can override methods from its superclass. In this example, the Car class is overriding the move method of the Vehicle class. Since the object is instantiated as a Car, the overridden move method in the Car class is called, producing the output "The car moves".

15. What is the output of the following Java program?

class Parent {
    String name = "parent";
    String message() {
        return "from parent";
    }
}

class Child extends Parent {
    String name = "child";
    String message() {
        return "from child";
    }
}

public class Main {
    public static void main(String[] args) {
        Parent p = new Child();
        System.out.println(p.name + " " + p.message());
    }
}
A. "parent from parent" 
B. "child from child" 
C. "parent from child" 
D. "child from parent" 

Answer: 

C. "parent from child" 

Explanation: 

In Java, while methods are overridden (dynamic binding), variables are not overridden (static binding). Therefore, p.name refers to the Parent class variable, and p.message() refers to the Child class method.

Conclusion: 

This quiz tested your knowledge of Java OOPs concepts, including encapsulation, inheritance, polymorphism, abstraction, and more. By understanding these concepts, you can design and develop efficient and modular Java programs. It is important to continue exploring and practicing these concepts to strengthen your understanding and proficiency in Java programming. 

Comments