Enumenum은 여러 상수를 선언해야할 때, 편리하게 선언할 수 있는 방법파라미터나 메서드 수행에 있어 너무 많은 경우의 수가 발생하는 것이 싫은 경우 케이스를 한정적으로 정의시 사용메서드 수행에 필요한 Integer, String과 같은 경우의 수가 많은 파라미터에 대해public static String createMessage(String message) { return "당신에게 메세지를 보냅니다. : " + message;}위 코드에서 파라미터에 `String` 타입이면 모든지 다 들어갈 수 있다.sendMessage(MessageType.LOVE);sendMessage(MessageType.THANKS);Enum을 활용해서 상황에 맞춰 파라미터들을 제약할 수 있다. Enum을 사용한다면, ..
분류 전체보기
다형성(Polymorphism)여러가지 형태를 가질 수 있는 능력을 의미, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록함으로써 다형성을 프로그램적으로 구현하였다.하나의 동일 클래스의 메서드가 다양한 구현체로 호출된다. 다형성: 추상 클래스 상속을 통한`aobj.print()`로 호출가능하고, `bobj.print()`형태로도 호출 가능오버라이드: 부모 메서드를 덮어쓰기오버로드: 동일한 클래스에서 동일한 이름의 메서드로 파라미터만 다른 메서드class B extends A { private int tax = 100; // 오버라이드 Override, Over-write public void print() { System.out.println(super.price + tax); }..
Interface 추상화가장 필요한 요소를 제회하고 모두 다 감춰버리는 것자바에서는 "인터페이스" 혹은 "추상 클래스" 를 통해 이뤄낼 수 있다.인터페이스: 구현체는 감추고, 필요한 메서드만 노출 -> 메서드 가져다 호출만 하면 된다.추상 클래스: 구현체는 감추고, 필요한 필드와 메서드만 노출 -> 메서드, 필드 가져다 호출만 하면 된다.Generic제네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크(compile-time type check)를 해주는 기능이다.객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안전성을 높이고 형변환의 번거로움이 줄어든다.💡타입의 안전성?타입의 안전성을 높인가는 것은 의도하지 않은 타입의 객체를 저장하는 것을 막고, 저장된 객..
Final: 고정 - 수정 불가능 1. final 필드: 값이 변하지 않는다.필드(클래스 내 변수)에 final예약어가 사용되면, 값이 변하지 않는다는 의미언제 사용? 단위나 고정값을 사용할 때 2. final메서드: 상속(Override)되지 않는다.메서드(클래스 내 함수)에 final 예약어가 사용된다면, Override(상속)가 되지 않는다는 의미언제 사용? 해당 메서드가 꼭 한가지의 구현만으로만 다양한 곳에서 사용되는 경우상속 받았다고, 상속받은 메서드를 너무 쉽게 Override하면, 해당 사용처서 side effect발생 가능아래 코드는 `Member` 클래스에 정의된 final 메소드이다. add() 메서드에서는 나이에 10만 더하는 기능만 사용하고 싶다면 아래와 같이 final로 메소드 ..
객체 종류: DTO와 VO - 객체 목적에 따른 명칭DTO(Data Transfer Object)가변 객체 = 객체 내 데이터를 Getter로 조회 가능, 객체 내 데이터를 Setter로 쓰기 가능순수하게 데이터를 담아 계층간 전달하는 객체로직을 갖고 있지 않은 순수한 데이터 객체이며 메서드로는 getter / setter만 갖는다.Setter의 경우 변조 가능성 有 -> 생성자로 값을 넣어주도록 하면 전달하는 과정에서 변조가 불가능package com.example.spring_practice.dto;import lombok.Getter;import lombok.Setter;@Getter//@Setterpublic class MemberDto { private String name; priv..
정적 팩토리 메서드객체를 생성할 수 있는 방법이 오직 단, 하나의 정적 메소드 방식으로 만 가능하도록 설정팩토리 메서드 = 객체를 생성 및 반환하는 정적 메서드정적 메소드의 의의는 기존 객체에서 새로운 객체로의 변환이다.한가지 예를 들어보자면 Enum의 요소를 조회할 때 사용하는 `valueOf`도 정적 팩토리 메서드의 일종이라고 할 수 있다.미리 생성된 객체를 "조회"를 하는 메서드이기 대문에 팩토리 역할을 한다고 볼 수는 없지만, 외부에서 원하는 객체를 반환해주고 있으므로 결과적으로는 정적 팩토리메서드라고 간주해도 좋다.public enum Color { RED, BLUE;}...Color redColor = Color.valueOf("RED");Color blueColor = Color.val..
빌더 패턴은 3가지로 분리되어 호출빌더 정의 -> 필드설정 -> 객체 생성 1. 빌더 정의Member.MemberBuilder builder = Member.builder() 2. 필드 설정builder .name("Aaron") .email("aaron@example.com") 3. 객체 생성Member aaron = builder.build(); 흔히 사용하는 빌드 패턴은 아래와 같이 빌드 정의 + 필드 설정 + 객체 생성이 모두 합쳐진 상태Member aaron = Member.builder(); .email("aaron@example.com") .name("Aaron") .build(); 생성자가 아닌 빌더를 통해 객체를 생성하는 이유내가 ..
생성자필요한 형태의 객체에 따라 생성자 만들어서 사용 가능, 객체는 아래 3가지 방법으로 생성할 수 있다.@NoArgsConstructor + + @SetterCustom Constructor@AllArgsConstructor 1. @NoArgsConstructor + @Setter먼저 빈 객체를 생성한 뒤, 필요에 따라 원하는 필드값을 주입하는 방식빈 생성자(@NoArgsConstructor) + 수정자(@Setter) 통한 필드 주입 2. Custom Constructor1. 필요한 필드값만 주입 받는 생성자부분 생성자(@RequiredArgsconstructor) + 수정자(@Setter) 통한 필드 주입 2. DTO (데이터 전달용 객체)를 통한 생성자DTO(Data Transfer Ob..
객체 지향 프로그래밍(Object-Oriented Programming, OOP)객체지향 프로그래밍은 아래 4가지 핵심 개념을 통해 지원캡슐화상속추상황다형성위 4개 핵심 개념은 아래와 같이 분류 가능Class: 캡슐화 + 상속캡슐화(Encapsulation)상속(Inheritance): ExtendsInterface: 추상황 + 다형성추상화(Abstraction): Interface and Abstract Class다형성(Polymolphism): Class의 다형성 + Interface의 다형성Class: 캡슐화 + 상속클래스 = 데이터 + 행위데이터: 필드(Field) 혹은 속성(Attribute)Primitive Type: 값을 담는 그릇, 값이 필수임, 값을 지정하지 않으면 기본값이 들어간다.in..