2026/05/15 4

내부 클래스(Inner Class)

1. 내부 클래스란?클래스 내부에 선언된 또 다른 클래스로, 외부 클래스의 멤버(필드/메서드)에 자유롭게 접근할 수 있으며, 밀접하게 관련된 기능을 함께 묶어 설계할 수 있도록 도와준다. 또한, 내부 클래스를 활용하면, 코드의 응집도를 높이고, 캡슐화를 강화할 수 있다.1-2. 내부 클래스의 종류구분선언 위치외부 클래스 접근 가능 여부특징1. 인스턴스 내부 클래스외부 클래스의 멤버 위치외부 인스턴스 변수 접근 가능외부 클래스와 강한 결합2. 정적(static) 내부 클래스외부 클래스의 멤버 위치외부의 static 멤버만 접근 가능static 키워드 사용, 독립성 높음3.지역 내부 클래스외부 클래스의 메서드 또는 초기화 블록 내부final 또는 effectively final 지역 변수 접근 가능메서드 ..

자바 고급(JAVA) 2026.05.15

SOLID 원칙 - DIP(Dependency Inversion Principle)

1. DIP의 핵심 개념구체적인 클래스에 직접 의존하지 말고, 인터페이스(추상화)에 의존의존 방향을 뒤집어서, 유연하고 확장 가능한 구조를 만든다.※ DI(Dependency Inversion)과 DI(Dependency Injection)이 이니셜로 나타내면 똑같기 때문에 헷갈리는 경우가 많다. 핵심적으로 보면 같은 개념을 다른 관점에서 설명하는 것이라고 이해하면 편하다.1 - 1. 고수준 모듈과 저수준 모듈- 고수준 모듈 : 핵심 비즈니스 로직 (주문 서비스, 결제 처리 등)- 저수준 모듈 : 세부 구현 로직 (파일 저장, 데이터베이스 연동 등)interface Logger { void log(String msg);}class FileLogger implements Logger { publ..

자바 고급(JAVA) 2026.05.15

SOLID 원칙 - ISP(인터페이스 분리 원칙)

1. ISP란? - 하나의 커다란 인터페이스보다는 작고 구체적인 인터페이스 여러 개로 나누는 것이 좋다는 원칙이다. - 왜 중요할까? - 인터페이스가 너무 크면, 사용하지 않는 기능까지 구현해야 해서 불필요한 의존성과 결합이 생긴다. - 사용자는 자신이 필요한 기능만 정의된 인터페이스에 의존해야 유지보수가 쉬워진다.1 - 1. 인터페이스의 분리 기준 - 핵심 개념하나의 거대한 인터페이스를 쪼개서, 필요한 기능만 포함된 인터페이스를 각각 제공하자.작고 응집도 높은 인터페이스를 여러 개 만드는 것이 더 좋은 설계이다.interface Printer { void print();}interface Scanner { void scan();}interface Fax() { void fax..

자바 고급(JAVA) 2026.05.15

SOLID원칙 - LSP(리스코프 치환 원칙)

1. LSP란?- 상위 타입(부모 클래스)으로 하위 타입(자식 클래스)을 사용해도 프로그램의 동작에 문제가 없어야 한다는 원칙1 - 1. 계약에 의한 설계계약이란?메소드의 입력 조건(사전조건), 출력 조건(사후조건), 불변 조건 등을 명확하게 정해놓고 지키는 설계 방식LSP는 "자식 클래스도 이 계약을 지켜야 한다"는 원칙하위 클래스가 부모의 메소드를 재정의하더라도, 기존 계약을 위반해서는 안된다.위반 예시class Bird { void fly() { System.out.println("날아간다"); }}class Ostrich extends Bird { void fly() { throw new UnsupportedOperationException(); }}Ostrich는 Bird지만 날지 못..

자바 고급(JAVA) 2026.05.15