전체 방문자
오늘
어제
이대코
ServerNeverDown
이대코
  • 분류 전체보기 (109)
    • Project (9)
      • GASIP_대학 커뮤니티 (5)
      • CATCHROOM_야놀자중고숙박거래 (2)
      • CANCER-FINE_암환자를 위한 정보 제공 사.. (2)
    • Development (46)
      • Python (9)
      • Java (8)
      • Kotlin (1)
      • Spring&Springboot (4)
      • BootCamp (10)
      • DevOps (1)
      • TrobleShooting (6)
      • Network (1)
      • DataBase (2)
      • OS (1)
      • Design Pattern (2)
    • Coding Test (51)
      • BOJ (1)
      • DFS,BFS (4)
      • 그리디 알고리즘 (6)
      • Dynamic Programming (2)
      • 이진 탐색 (0)
      • 초보자를 위한 파이썬 300제 (29)
      • 구현 (9)
    • Stock (3)
      • Market View (2)
      • Analysis of stocks (0)
      • Knowledge (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

인기 글

hELLO · Designed By 정상우.
이대코

ServerNeverDown

Development/Java

자바는 왜 객체지향 언어인가요?

2025. 3. 15. 13:44

자바는 캡슐화,상속,추상화,다형성의 특징을 갖고 있기 때문입니다.

 

흔히 말하는 "캡상추다" 가 맞습니다.

 

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
    'Development/Java' 카테고리의 다른 글
    • JVM 밑바닥까지 파헤치기
    • 자바 컴파일 과정
    • 객체지향 설계원칙 : SOLID 란?
    • 객체 지향 프로그래밍이란?? 객체 지향의 4가지 특징 Feat.캡상추다
    이대코
    이대코
    20대에 대장암 걸린 코틀린/자바 백엔드 개발자의 블로그입니다.

    티스토리툴바