- Java Tutorial
 - Java Introduction
 - Java Features
 - Java Simple Program
 - JVM, JDK and JRE
 - Java Syntax
 - Java Comments
 - Java Keywords
 - Java Variables
 - Java Literals
 - Java Separators
 - Java Datatypes
 - Java Operators
 - Java Statements
 - Java Strings
 - Java Arrays
 - Control Statement
 - Java If
 - Java If-else
 - Java If-else-if
 - Java Nested If
 - Java Switch
 - Iteration Statement
 - Java For Loop
 - Java For Each Loop
 - Java While Loop
 - Java Do While Loop
 - Java Nested Loop
 - Java Break/Continue
 - Java Methods
 - Java Methods
 - Java Method Parameters
 - Java Method Overloading
 - Java Recursion
 - Java OOPS
 - Java OOPs
 - Java Classes/Objects
 - Java Inheritance
 - Java Polymorphism
 - Java Encapsulation
 - Java Abstraction
 - Java Modifiers
 - Java Constructors
 - Java Interface
 - Java static keyword
 - Java this keyword
 - Java File Handling
 - Java File
 - Java Create File
 - Java Read/Write File
 - Java Delete File
 - Java Program To
 - Add Two Numbers
 - Even or Odd Numbers
 - Reverse a String
 - Swap Two Numbers
 - Prime Number
 - Fibonacci Sequence
 - Palindrome Strings
 - Java Reference
 - Java String Methods
 - Java Math Methods
 
Java Object-Oriented Programming (OOP)
Java is an object-oriented programming (OOP) language, which means it emphasizes the use of objects to model and manipulate data and behavior. Here's a concise overview of Java's OOP concepts:
Classes and Objects:
- A class is a blueprint for creating objects, defining their properties (attributes) and behaviors (methods).
 - An object is an instance of a class, representing a specific entity in a program.
 - Example
 
class Car {
    String brand;
    int year;
    void drive() {
        System.out.println("Driving the " + brand);
    }
}
// Creating objects of the class
Car myCar = new Car();
myCar.brand = "Toyota";
myCar.year = 2020;
Encapsulation:
- Encapsulation refers to the bundling of data (attributes) and methods that operate on the data within a class, preventing direct access from outside the class.
 - Access to the data is controlled through methods, known as accessors and mutators (getters and setters)
 - Example
 
class Student {
    private String name;
    private int age;
    // Getter and setter methods
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    // Other methods...
}
Inheritance:
- Inheritance allows a class (subclass) to inherit properties and behaviors from another class (superclass).
 - Subclasses can extend the functionality of their superclass and override inherited methods.
 - Example
 
class Animal {
    void eat() {
        System.out.println("Animal is eating");
    }
}
class Dog extends Animal {
    void bark() {
        System.out.println("Dog is barking");
    }
}
Polymorphism:
- Polymorphism allows objects of different classes to be treated as objects of a common superclass.
 - It enables methods to behave differently based on the object they are invoked on, facilitating code reuse and flexibility.
 - Example
 
class Animal {
    void makeSound() {
        System.out.println("Animal makes a sound");
    }
}
class Dog extends Animal {
    void makeSound() {
        System.out.println("Dog barks");
    }
}
class Cat extends Animal {
    void makeSound() {
        System.out.println("Cat meows");
    }
}
Abstraction:
- Abstraction refers to the process of hiding complex implementation details and exposing only the essential features of an object.
 - Abstract classes and interfaces provide a way to achieve abstraction in Java.
 - Example
 
abstract class Shape {
    abstract void draw();
}
class Circle extends Shape {
    void draw() {
        System.out.println("Drawing a circle");
    }
}
class Rectangle extends Shape {
    void draw() {
        System.out.println("Drawing a rectangle");
    }
}
Summary
Java's OOP features promote modularity, code reuse, and maintainability, making it a popular choice for building robust and scalable software systems. Understanding OOP concepts is essential for developing effective Java applications.