Java OOP: Class, Object, Inheritance, Polymorphism อธิบายแบบเข้าใจง่าย

#java13 เม.ย. 2569

OOP ใน Java

Java เป็นภาษา Object-Oriented Programming (OOP) เต็มรูปแบบ มีหลักการ 4 ข้อ: Encapsulation, Inheritance, Polymorphism, Abstraction

Class และ Object

public class Person {
    // Fields (Encapsulation)
    private String name;
    private int age;

    // Constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getters/Setters
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getAge() { return age; }

    // Method
    public String introduce() {
        return "สวัสดี ฉันชื่อ " + name + " อายุ " + age + " ปี";
    }

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
}

// สร้าง Object
Person person = new Person("สมชาย", 25);
System.out.println(person.introduce());

Inheritance

public class Employee extends Person {
    private String department;
    private double salary;

    public Employee(String name, int age, String department, double salary) {
        super(name, age);  // เรียก constructor ของ parent
        this.department = department;
        this.salary = salary;
    }

    @Override
    public String introduce() {
        return super.introduce() + " ทำงานที่ " + department;
    }

    public double getAnnualSalary() {
        return salary * 12;
    }
}

Polymorphism

public abstract class Shape {
    public abstract double area();
    public abstract double perimeter();

    public void printInfo() {
        System.out.printf("พื้นที่: %.2f, เส้นรอบวง: %.2f%n", area(), perimeter());
    }
}

public class Circle extends Shape {
    private double radius;

    public Circle(double radius) { this.radius = radius; }

    @Override
    public double area() { return Math.PI * radius * radius; }

    @Override
    public double perimeter() { return 2 * Math.PI * radius; }
}

public class Rectangle extends Shape {
    private double width, height;

    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    @Override
    public double area() { return width * height; }

    @Override
    public double perimeter() { return 2 * (width + height); }
}

// Polymorphism ในการใช้งาน
List<Shape> shapes = List.of(
    new Circle(5),
    new Rectangle(4, 6)
);

for (Shape shape : shapes) {
    shape.printInfo();  // เรียก method ที่ถูก override
}

Interface

public interface Printable {
    void print();
    default void printWithBorder() {
        System.out.println("---");
        print();
        System.out.println("---");
    }
}

public class Document implements Printable {
    private String content;

    public Document(String content) { this.content = content; }

    @Override
    public void print() { System.out.println(content); }
}

สรุป

OOP ใน Java ช่วยให้โค้ดมีโครงสร้างที่ดี reusable และ maintainable การเข้าใจ Class, Inheritance, Polymorphism และ Interface เป็นพื้นฐานสำคัญของ Java developer ครับ