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
서비스 클래스는 보통 다음 두 가지 역할을 합니다:
- 기본적인 CRUD 기능 (Create, Read, Update, Delete)
- Read는 전체조회와 상세조회로 나눠서 총 5개 기능
- 비즈니스 로직
- 예: 사원 이름 기준 정렬, 부서별 평균 연봉 계산 등
✅ 실무 포인트
- 어떤 기능이든 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
반응형