자바는 캡슐화,상속,추상화,다형성의 특징을 갖고 있기 때문입니다.
흔히 말하는 "캡상추다" 가 맞습니다.
1. 캡슐화(Encapsulation)
- 객체 내부의 데이터(속성)는 private으로 숨기고, getter/setter 메서드를 통해 접근할 수 있습니다.
- 이를 통해 데이터 보호와 정보 은닉이 가능하며, 유지보수가 쉬워집니다.
public class Person {
private String name; // 외부에서 직접 접근 불가
public String getName() { // 캡슐화를 통해 접근
return name;
}
public void setName(String name) {
this.name = name;
}
}
2. 상속(Inheritance)
- 기존 클래스를 확장하여 새로운 클래스를 만들 수 있습니다.
- 코드 재사용성을 높이고, 중복을 줄이며, 유지보수를 쉽게 합니다.
class Animal {
void makeSound() {
System.out.println("동물이 소리를 냅니다.");
}
}
class Dog extends Animal {
void bark() {
System.out.println("멍멍!");
}
}
3. 추상화(Abstraction)
- 불필요한 세부 사항을 숨기고, 핵심 기능만 노출합니다.
- 인터페이스와 추상 클래스를 사용하여 구현됩니다.
abstract class Vehicle {
abstract void move(); // 구현 강제
}
class Car extends Vehicle {
@Override
void move() {
System.out.println("자동차가 달립니다.");
}
}
4. 다형성(Polymorphism)
- 하나의 인터페이스나 부모 클래스를 기반으로 다양한 형태의 객체를 사용할 수 있습니다.
- 여기서 다형성이란 하나의 객체에 여러 가지 타입을 대입할 수 있다는 것을 의미합니다.
- 메서드 오버라이딩(Overriding)과 메서드 오버로딩(Overloading)으로 구현됩니다.
class Animal {
void makeSound() {
System.out.println("동물이 소리를 냅니다.");
}
}
class Cat extends Animal {
@Override
void makeSound() {
System.out.println("야옹!");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Cat(); // 부모 타입으로 자식 객체 참조 가능
myAnimal.makeSound(); // 야옹!
}
}
'Development > Java' 카테고리의 다른 글
JVM 밑바닥까지 파헤치기 (8) | 2025.03.21 |
---|---|
자바 컴파일 과정 (6) | 2025.03.16 |
객체지향 설계원칙 : SOLID 란? (3) | 2024.02.27 |
객체 지향 프로그래밍이란?? 객체 지향의 4가지 특징 Feat.캡상추다 (2) | 2024.02.26 |
boolean 바인딩 에러.. boolean과 Boolean의 차이 (2) | 2024.02.02 |