Classes and Objects
A class is a blueprint; an object is an instance of that blueprint.
public class Person {
// Fields (instance variables)
private String name;
private int age;
// Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter
public String getName() { return name; }
// Method
public void introduce() {
System.out.println("Hi, I am " + name + ", age " + age);
}
}
// Creating objects
Person alice = new Person("Alice", 30);
alice.introduce(); // "Hi, I am Alice, age 30"
Inheritance
public class Animal {
protected String name;
public Animal(String name) { this.name = name; }
public void speak() { System.out.println(name + " makes a sound"); }
}
public class Dog extends Animal {
public Dog(String name) { super(name); }
@Override
public void speak() { System.out.println(name + " barks!"); }
}
Animal a = new Dog("Rex");
a.speak(); // "Rex barks!" — polymorphism
Interfaces
public interface Flyable {
void fly();
default String getType() { return "flying object"; }
}
public class Bird extends Animal implements Flyable {
public Bird(String name) { super(name); }
public void fly() { System.out.println(name + " is flying!"); }
}
Abstract Classes
public abstract class Shape {
abstract double area();
void printArea() {
System.out.println("Area: " + area());
}
}
public class Circle extends Shape {
double radius;
Circle(double r) { this.radius = r; }
double area() { return Math.PI * radius * radius; }
}
Encapsulation Summary
- private — only accessible within the class
- protected — accessible in class and subclasses
- public — accessible everywhere
- Use getters/setters to control access to private fields