Lập trình hướng đối tượng (Object-Oriented Programming – OOP) là một phương pháp lập trình dựa trên khái niệm “đối tượng”, trong đó mỗi đối tượng đại diện cho một thực thể có trạng thái và hành vi. Java là một trong những ngôn ngữ lập trình phổ biến nhất sử dụng mô hình OOP.
II. Các Khái Niệm Cơ Bản trong OOP
2.1. Lớp (Class)
Lớp là một khuôn mẫu (template) để tạo ra các đối tượng. Lớp định nghĩa các thuộc tính (properties) và phương thức (methods) mà các đối tượng của nó sẽ có.
public class Animal {
// Thuộc tính
String name;
int age;
// Phương thức
void eat() {
System.out.println(name + " is eating.");
}
void sleep() {
System.out.println(name + " is sleeping.");
}
}
2.2. Đối Tượng (Object)
Đối tượng là một thể hiện (instance) của lớp. Đối tượng có thể truy cập các thuộc tính và phương thức được định nghĩa trong lớp của nó.
public class Main {
public static void main(String[] args) {
Animal dog = new Animal();
dog.name = "Buddy";
dog.age = 3;
dog.eat();
dog.sleep();
}
}
2.3. Kế Thừa (Inheritance)
Kế thừa cho phép một lớp (subclass) thừa hưởng các thuộc tính và phương thức của một lớp khác (superclass). Điều này giúp tái sử dụng mã nguồn và tạo ra mối quan hệ phân cấp giữa các lớp.
public class Dog extends Animal {
void bark() {
System.out.println(name + " is barking.");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.name = "Buddy";
dog.age = 3;
dog.eat();
dog.sleep();
dog.bark();
}
}
2.4. Đa Hình (Polymorphism)
Đa hình cho phép các đối tượng thuộc các lớp khác nhau có thể được truy cập thông qua cùng một interface. Trong Java, đa hình thường được thực hiện thông qua kế thừa và interface.
public class Cat extends Animal {
void makeSound() {
System.out.println(name + " is meowing.");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.name = "Buddy";
myCat.name = "Whiskers";
myDog.makeSound();
myCat.makeSound();
}
}
2.5. Đóng Gói (Encapsulation)
Đóng gói là nguyên tắc che giấu thông tin, chỉ cho phép truy cập và sửa đổi thông qua các phương thức được cung cấp. Điều này bảo vệ dữ liệu và ngăn chặn truy cập trái phép.
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}