자바 정리2 (보충)

김종조·2025년 2월 13일
post-thumbnail

1. Java의 주요 특징

  • 객체지향 언어 : 모든 프로그램은 객체로 구성된다.
  • 플랫폼 독립성 : JVM을 통해 어떤 플랫폼에서도 실행될 수 있다.
  • 자동 메모리 관리 : 가비지 컬렉션을 통해 메모리를 자동으로 관리한다.
  • 다중 쓰레드 지원 : 멀티 쓰레딩을 내장하여, 동시에 여러 작업을 실행할 수 있다.

2. 객체지향 프로그래밍의 4가지 핵심 개념

  • 캡슐화 : 객체의 속성과 메소드를 하나의 단위로 묶고, 외부에서 접근을 제한한다.
  • 상속 : 상위 클래스의 특성을 하위 클래스가 물려받는 것
  • 다형성 : 동일한 메시지에 대해 서로 다른 동작을 수행할 수 있다.
  • 추상화 : 불필요한 세부 사항을 숨기고, 중요한 부분만을 드러낸다.

3. 추상클래스와 인터페이스의 차이점

추상 클래스

  • 클래스이면서 메소드의 일부를 추상 메소드로 정의할 수 있다.
  • 상속을 통해 클래스에서 다른 클래스가 기능을 확장할 수 있다.
  • 멤버 변수를 가질 수 있고, 생성자를 가질 수 있다.
  • 하나의 클래스만 상속할 수 있다.
    인터페이스
  • 클래스가 아니며, 메소드의 구현 없이 메소드 시그니처만 정의한다.
  • 여러 클래스에서 다중 구현을 할 수 있다.
  • 멤버 변수는 상수만 가질 수 있다.
  1. 추상클래스는 공통된 구현을 제공하면서도 일부 메서드는 자식 클래스에서 구형하도록 강제합니다. 클래스 자체가 상태를 가질 수 있어, 생성자나 인스턴스 변수 등을 정의할 수 있습니다.
    하지만 다중 상속이 불가능하여 하나의 클래스만 상속할 수 있습니다.
  2. 인터페이스는 주로 특정 동작을 정의하는데 사용되며, 구현을 제공하지 않고 메서드의 선언만 정의합니다. 인터페이스는 다중 상속이 가능해서 여러 개의 인터페이스를 구현할 수 있습니다. 또한, 인스턴스 변수나 생성자를 가질 수 없고, 기본적으로 메서드는 추상 메서드로 정의됩니다.

4. java에서 다형성을 구현하는 방법

  • 오버로딩 : 동일한 메서드 이름을 사용하지만, 매개변수의 개수나 타입이 달라 다르게 동작하도록 하는 것
  • 오버라이딩 : 부모 클래스에서 정의된 메서드를 자식 클래스에서 재정의 하는 것이다.
  • 인터페이스/추상클래스 사용 : 동일한 인터페이스를 구현하거나, 추상 클래슬르 상속받은 여러 클래스에서 각각 다른 방식으로 구현한다.

5. Java의 접근제어자

  • public : 어디서든 접근이 가능하다.
  • protected : 동일한 패키지, 상속 관계에 있는 클래스 에서만 접근 가능
  • default : 같은 패키지 내에서만 접근 가능
  • private : 같은 클래스 에서만 접근 가능

6. Java에서 == 와 equals() 메소드의 차이점

== 는 두 객체가 같은 메모리 주소를 참조하는지를 비교,
equals 는 두 객체의 내용이 동일한 지 비교

7. 컬렉션 프레임워크

데이터를 저장하고 관리하는 여러 클래스와 인터페이스의 집합

  • List : 순서가 있는 데이터의 집합 (순서유지, 중복허용)
  • Set : 중복을 허용하지 않는 데이터의 집합 (순서유지x, 중복x)
  • Queue : FIFO 방식의 큐
  • Map : 키와 값을 한 쌍으로 데이터를 저장 (순서유지x, 키 중복x, 값 중복o)

8. 가비지 컬렉션의 동작

가비지 컬렉션은 더 이상 참조되지 않는 객체를 자동으로 메모리에서 제거하는 기능이다.
가비기 컬렉션은 Heap 메모리에서 객체를 추적하며, Mark-and-Sweep 알고리즘을 사용하여 불필요한 객체를 정리한다.
Mark : 살아있는 객체들을 표시
Sweep : 표시되지 않은 객체를 메모리에서 제거

profile
웹 개발 공부 기록

0개의 댓글