[JAVA] 인터페이스 vs 추상클래스 차이점 정리
·
Language/Java
1. 한눈에 보는 비교 (Interface vs abstract) 인터페이스와 추상 클래스, 막상 비교하려면 헷갈리는 두 개념의 문법적 차이를 표로 정리했습니다. 구분추상 클래스인터페이스사용 키워드abstractinterface사용 가능 변수제한 없음static final (상수)접근 제어자제한 없음(public, private, protected, default)public사용 가능 메서드제한 없음abstract, default, static, private상속 키워드extendsimplements다중 상속 여부불가능가능클래스에 다중구현, 인터페이스 끼리 다중 상속공통점1. 추상 메서드를 가지고 있어야 한다.2. 인스턴스화 할 수 없다. (new 생성자 사용 불가)3. 구현체(자식 클래스)의 인스턴스를..
[JAVA] Stack 구현 & Stack Class의 문제점 (feat. Deque)
·
Language/Java
📚Java Collection: Stack & DequeProblem Source: GitHub - Sw_Pilot_Java (Chapter 2 / Step 2 - 3) LIFO 구조인 스택의 개념과 사용법, 그리고 현대적인 대체제인 Deque를 알아봅니다.스택(Stack)은 '쌓다', '더미'라는 뜻을 가지고 있습니다. 식당에 쌓여 있는 접시 더미나, 총기의 탄창을 떠올리면 이해하기 쉽습니다. 가장 마지막에 들어간 데이터가 가장 먼저 나오는 LIFO(Last In First Out, 후입선출) 구조를 가지고 있으며, 이는 먼저 들어간 데이터가 먼저 나오는 Queue(FIFO)와 정반대되는 개념입니다. 1. 스택(Stack)의 구조와 특징LIFO 구조: 나중에 넣은(Push) 데이터가 먼저 나옵..
[JAVA] Collection Framework & Collections Class _ Part 1
·
Language/Java
🗂️Java Concept: Collection Framework & Collections Class _ Part 1자바의 자료구조(Collection) 전체 구조와 인터페이스 종류에 대해 정리해 보겠습니다자바를 공부하다 보면 Collection과 Collections라는 비슷하게 생긴 두 단어를 마주하게 됩니다. 's' 하나 차이인데 역할은 완전히 다릅니다. Collection 는 데이터를 담는 그릇(Framework)이고, Collections 는 그 그릇을 요리하는 도구(Utility)입니다.오늘은 자바의 자료구조 전체 지도인 컬렉션 프레임워크를 먼저 훑어보고, 다음 장에 이를 효율적으로 다루기 위한 Collections 클래스의 기능들을 정리해 보겠습니다. 1. 자바 컬렉션 프레임워크 (Col..
[JAVA] Getter/Setter 이중성 & 문제점 Refactoring
·
Language/Java
☕Java Study: Refactoring Getter/Setter이 포스팅은 Getter/Setter의 남용을 막고, 객체지향적인 설계를 하는 방법을 정리한 글입니다.자바를 처음 배울 때, 우리는 클래스를 만들고 습관적으로 모든 필드에 대해Getter와 Setter를 생성하곤 합니다. IDE가 단축키 한 번이면 만들어주니 너무나 자연스럽죠.하지만 "이게 정말 객체지향적인가?"라는 의문을 가져본 적 있으신가요?단순히 값을 넣고 빼기만 한다면 그건 객체가 아니라 데이터 주머니에 불과할지도 모릅니다. 오늘은 무분별한 Getter/Setter 사용이 왜 문제인지, 그리고 이를 해결하기 위한 진짜 객체지향 설계 방법(Rich Domain Model, VO 등)에 대해 정리해보겠습니다. 1. Getter/Set..
[JAVA] 접근제한자 & 캡슐화
·
Language/Java
🔒Java Concept: Access Modifier & Encapsulation접근제한자와 캡슐화, 그리고 더 나은 설계를 위한 메서드 활용법을 다룹니다.자바 프로그래밍을 하다 보면 public, private 같은 단어들을 매일 마주하게 됩니다. 처음에는 "그냥 다 public으로 하면 편하지 않나?"라고 생각할 수 있습니다. 하지만 이 접근제한자(Access Modifier)야말로 객체 지향의 핵심인 보안과 무결성을 지키는 문지기 역할을 합니다. 오늘은 접근제한자의 종류와 범위부터, Getter/Setter의 장단점, 그리고 최근 실무에서 Getter/Setter 대신 선호하는 "의미 있는 메서드 설계"까지 완벽하게 정리해 보겠습니다. 1. 접근제한자 완벽 정리 (Scope)접근 제한자는 "누..
[JAVA] 객체 지향 프로그래밍 4대 원칙
·
Language/Java
☕Java Concept: OOP 4 Principles & Methods이 포스팅은 객체 지향의 4대 원칙과 관련 문법, 사용 이유를 정리한 글입니다.자바(Java)를 공부하다 보면 숨 쉬듯이 듣게 되는 단어가 있습니다. 바로 객체 지향 프로그래밍(OOP, Object-Oriented Programming)입니다. "그냥 클래스 만들고 객체 생성하면 되는 거 아냐?"라고 생각하기 쉽지만, 실무에서 유지보수하기 좋은 코드를 짜기 위해서는 OOP의 4가지 핵심 원칙을 제대로 이해하고 있어야 합니다. 오늘은 캡슐화, 상속, 다형성, 추상화가 도대체 왜 필요하며, 자바에서 이를 구현하기 위해 어떤 키워드와 메서드를 사용하는지 완벽하게 파헤쳐 보겠습니다. 캡슐화 (Encapsulation)캡슐화는 데이터(변수)..
[JAVA] String vs StringBuilder vs StringBuffer 비교 정리 (왜 문자열을 다루는 클래스가 3개나 있을까?)
·
Language/Java
자바를 처음 공부할 때 가장 먼저 마주치는 혼란 중 하나가 바로 문자열 처리입니다. "그냥 String 쓰면 되는 거 아니야?"라고 생각하다가도, 조금만 깊이 들어가면 StringBuilder, StringBuffer 같은 녀석들이 튀어나옵니다. 심지어 면접 단골 질문이기도 하죠. 도대체 왜 자바는 문자열을 다루는 클래스를 3개나 만들어 뒀을까요? 단순히 암기하는 것이 아니라, "메모리 구조와 스레드 안전성(Thread Safety)"이라는 내부 원리를 통해 이들의 존재 이유를 알아봅시다!1. 기본 String 사용 보통 우리는 문자열을 합칠 때 직관적으로 + 연산자를 사용합니다.public class StringExample { public static void main(String[] args)..