JAVA

자바 핵심 개념 정리: static, 인터페이스, abstract class, 변수 구분까지 한눈에!

개발자 누렁이 2025. 4. 30. 00:30
728x90
반응형

자바 핵심 개념들을 정리해봅니다.
static 키워드, interface와 abstract class의 차이, 변수의 종류(Field, Static, Local), 그리고
서비스 클래스 설계 방식까지 — 자바 프로그램의 기초가 되는 개념들입니다.


1. static 키워드와 클래스 변수(Class Variable)

✅ 인스턴스 변수 vs 클래스 변수

구분인스턴스 변수 (Field)클래스 변수 (Static)
선언 위치 클래스 내부, 메서드 외부 클래스 내부, 메서드 외부
메모리 영역 Heap Class Area (Method Area)
접근 방식 객체명.변수명 클래스명.변수명 or 객체명.변수명
값 공유 여부 객체마다 다름 모든 객체가 하나를 공유
별칭 Member Variable Class Variable, 전역 변수

 

class Card {
    private int number;       // 인스턴스 변수
    private String shape;     // 인스턴스 변수
    public static final int WIDTH = 30;   // 클래스 변수
    public static final int HEIGHT = 40;  // 클래스 변수
}
 
  • Card c1 = new Card();, Card c2 = new Card(); 생성 시
    • c1.number != c2.number
    • c1.WIDTH == c2.WIDTH

✅ static 필드 언제 쓰나?

  • 객체마다 다른 값을 가질 필요가 없을 때
  • 공통된 설정값, 공유되는 상태 저장용으로 사용
  • 실무에서는 대부분의 프로젝트에서 static 필드는 무조건 등장

2. 변수의 종류 – Field, Static, Local

구분                Field (인스턴스 변수)                  Static V (클래스 변수)                                     Local V (지역 변수)

 

선언 위치 클래스 내부, 메서드 외부 클래스 내부, 메서드 외부 메서드 내부
메모리 Heap Class Area Stack
기본값 자동 초기화 (0, null 등) 자동 초기화 초기화 필요 (안 하면 에러)
생명주기 객체가 살아 있는 동안 클래스가 메모리에 올라가는 순간부터 블록 실행 시점 ~ 끝

Local 변수는 반드시 초기화하고 써야 합니다.


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

✅ 인터페이스 (interface)

interface Flyer {
    void fly();
    void takeOff();
    void land();
}
 
  • 메서드 선언만 있음 → 모든 메서드는 추상 메서드 (abstract)
  • 필드 X → 인스턴스로 만들 수 없음
  • 다중 구현 가능

✅ 인터페이스 구현 예

class Bird implements Flyer {
    public void fly() { /*...*/ }
    public void takeOff() { /*...*/ }
    public void land() { /*...*/ }

    public void layEggs() { /* 구체 메서드 */ }
}

✅ 사용 목적

  • 기능의 템플릿 정의
  • 서로 관련 없는 클래스들(Bird, Airplane, SuperMan)도 공통 기능 정의 가능

4. 서비스 클래스와 CRUD

서비스 클래스는 보통 다음 두 가지 역할을 합니다:

  1. 기본적인 CRUD 기능 (Create, Read, Update, Delete)
    • Read는 전체조회와 상세조회로 나눠서 총 5개 기능
  2. 비즈니스 로직
    • 예: 사원 이름 기준 정렬, 부서별 평균 연봉 계산 등

✅ 실무 포인트

  • 어떤 기능이든 CRUD 기반은 필수로 갖춰야 함
  • 부가 기능은 CRUD 위에서 구성됨

5. equals vs ==

문자열 비교는 항상 ==이 아니라 .equals()를 써야 합니다.

String name1 = "홍길동";
String name2 = new String("홍길동");

System.out.println(name1 == name2);      // false (주소 비교)
System.out.println(name1.equals(name2)); // true (값 비교)

6. static 블록

static {
    // 클래스가 메모리에 올라올 때 단 한 번 실행
    System.out.println("클래스 초기화 작업");
}
 
  • 객체 생성 전에 필요한 초기화 코드가 있을 경우 사용
  • 일반적으로 설정값 로딩, 로그 초기화 등에서 사용

7. 자바 웹 아키텍처 간단 정리

Tier구성요소
1-Tier 클라이언트만 (예: 로컬에서 단독 실행)
2-Tier 클라이언트 + DB 서버
3-Tier 클라이언트 + 웹 서버 + DB (보통의 웹 구조)
  • WAS = Web Application Server = 컨테이너 (예: Tomcat)
  • 요청 순서: 클라이언트(1) → WAS(2) → DB(3)
  • 개발 순서: DB(3) → WAS(2) → 클라이언트(1)

마무리

이번 수업에서는 객체지향 프로그래밍의 기초가 되는 개념들을 다뤘습니다.
static vs field, interface와 abstract class, 그리고 서비스 설계 시 CRUD 원칙
이 모든 개념은 실무에서도 계속 만나게 될 내용들이니, 꼼꼼히 복습해두면 좋습니다.

728x90
반응형