Polymorphism, Enum, 함수형 인터페이스

yeezze·2022년 6월 10일
0
post-custom-banner

그동안 썼던 보고서 몰아서 업로드하기..

  1. Polymorphism
  2. Enumeration
  3. 함수형 인터페이스

1. Polymorphism

정의

다형성이란 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미한다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록하여 구현하고 있다.

[참고 출처 : http://www.tcpschool.com/java/java_polymorphism_concept]

활용

수업에서 다형성을 활용하여 구현한 코드를 살펴보자

패널에성 어떤 도형이 그려질지 컴파일 시점에는 알 수 없기 때문에 TShape라는 대표 객체를 활용했다. 원, 사각형, 선, 다각형 객체 클래스들은 TShape 클래스를 상속하여 재사용한다.

this.currentShape = this.selectedTool.newShape();

// newShape 메소드는 selectedTool 값에 따라 생성자가 달라진다.

// this.currentShape = new TRectangle();
// this.currentShape = new TOval();
// this.currentShape = new TLine();
// this.currentShape = new TPolygon();

// 4가지 유형 존재!

2. Enumeration

정의

줄여서 Enum이라고 불리며 열거라는 의미를 갖는다. 즉, 순서가 있는 열거형 상수이다. Enum은 순서와 값을 가진다. (index, String name)

ex) 월화수목금토일

장점

  • 문자열과 비교해, IDE의 적극적인 지원을 받을 수 있다.
    • 자동완성, 오타검증, 텍스트 리팩토링 등등
  • 허용 가능한 값들을 제한할 수 있다.
  • 반복성 코드를 줄여주어 리팩토링시 변경 범위가 최소화 된다. 내용의 추가가 필요하더라도, Enum 코드 외에 수정할 필요가 없다.

[참고 출처 : https://techblog.woowahan.com/2527/]

생성

Enum은 고정된 상수들의 집합으로써, 컴파일 단계에서 생성이 되기 때문에 컴파일 단계에서 생성자 내의 모든 값을 알고 있어야 한다. 즉, 다른 패키지나 클래스에서 Enum 타입 생성자에 접근해서 동적으로 어떤 값을 정해줄 수 없다. 때문에 Enum의 생성자는 기본적으로 접근 제어자가 private로 설정되어있다.

메소드

메소드설명
static E values()해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환함.
static E valueOf(String name)전달된 문자열과 일치하는 해당 열거체의 상수를 반환함.
protected void finalize()해당 Enum 클래스가 final 메소드를 가질 수 없게 됨.
String name()해당 열거체 상수의 이름을 반환함.
int ordinal()해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환함.

[참고 출처 : http://www.tcpschool.com/java/java_api_enum]

3. 함수형 인터페이스

수업에서 배운 것은 아니지만 찾아보다가 발견하게 되어서 정리하게 되었다.

Enum 상수를 정의할 때 인자로 함수를 받는다면 해당 내용을 적용하여 정의하면 된다.

public interface Function<T, R> {   // T타입의 인자, R타입의 객체 리턴
	R apply(T t);
}

/*
** 활용 코드
*/
Function<Integer, Integer> mul = (value) -> value * 2;
Integer result = mul.apply(3);
System.out.println(result);
// 결과 6

[참고 출처 : https://codechacha.com/ko/java8-functional-interface/]

profile
백엔드 개발자 😊
post-custom-banner

0개의 댓글