Java OOP
Object-oriented programming in Java: classes, objects, inheritance, polymorphism, and encapsulation.
Class & Object
// Define class
public class Person {
// Fields (properties)
private String name;
private int age;
// Constructor
public Person(String name, int age) {
this.name = name; # this = current object
this.age = age;
}
}
// Create object
Person p = new Person("John", 25);
Getters & Setters
// Getter method
public String getName() {
return name; # read value
}
// Setter method
public void setName(String name) {
this.name = name; # update value
}
Inheritance
// Parent class
public class Animal {
public void eat() {
System.out.println("Eating");
}
}
// Child class
public class Dog extends Animal { # inherits from Animal
public void bark() {
System.out.println("Woof!");
}
}
Method Overriding
// Override parent method
@Override # annotation
public void eat() {
System.out.println("Dog is eating");
}
// Call parent method
super.eat(); # call Animal.eat()
Abstract Class
// Abstract class
public abstract class Shape {
abstract void draw(); # no implementation
public void display() {
System.out.println("Shape"); # regular method
}
}
// Implement abstract class
class Circle extends Shape {
void draw() {
System.out.println("Circle"); # must implement
}
}
Interface
// Define interface
public interface Drawable {
void draw(); # all methods abstract
}
// Implement interface
public class Rectangle implements Drawable {
public void draw() {
System.out.println("Rectangle");
}
}
Polymorphism
// Runtime polymorphism
Animal animal = new Dog(); # parent reference, child object
animal.eat(); # calls Dog eat()
// Interface polymorphism
Drawable shape = new Circle();
shape.draw(); # calls Circle draw()
Encapsulation
// Private fields with public methods
public class BankAccount {
private double balance; # hidden from outside
public void deposit(double amount) {
if (amount > 0) {
balance += amount; # controlled access
}
}
public double getBalance() {
return balance;
}
}