🏗️ Lesson 8: Classes & Object-Oriented Programming
⏱️ Estimated time: 40 minutes | Difficulty: Intermediate
The Core of Java
Everything in Java is associated with classes and objects. Understanding OOP is vital for becoming a proficient Java developer.
Creating Classes
public class Student {
// Fields (attributes)
private String name;
private int age;
private double gpa;
// Constructor
public Student(String name, int age, double gpa) {
this.name = name;
this.age = age;
this.gpa = gpa;
}
// Getters & Setters
public String getName() { return name; }
public void setGpa(double gpa) {
if (gpa >= 0 && gpa <= 4.0) this.gpa = gpa;
}
// Method
public void display() {
System.out.println(name + ", Age: " + age + ", GPA: " + gpa);
}
}
// Usage
Student s = new Student("Alice", 20, 3.8);
s.display(); // Alice, Age: 20, GPA: 3.8
Inheritance
class Animal {
String name;
void eat() { System.out.println(name + " is eating"); }
}
class Dog extends Animal {
void bark() { System.out.println(name + " says Woof!"); }
@Override
void eat() { System.out.println(name + " is eating kibble"); }
}
Dog d = new Dog();
d.name = "Buddy";
d.eat(); // Buddy is eating kibble
d.bark(); // Buddy says Woof!
Interfaces
interface Drawable {
void draw(); // Abstract method
default void fill() { // Default implementation
System.out.println("Filling...");
}
}
class Circle implements Drawable {
double radius;
@Override
public void draw() {
System.out.println("Drawing circle with r=" + radius);
}
}
// A class can implement multiple interfaces!
ArrayList (Dynamic Arrays)
import java.util.ArrayList;
ArrayList<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.size(); // 2
names.get(0); // "Alice"
names.remove("Bob");
for (String name : names) {
System.out.println(name);
}
✅ Quick Quiz
❓ What keyword is used for inheritance in Java?
❓ What is an interface?
❓ What does @Override annotation do?