그동안 썼던 보고서 몰아서 업로드하기..
다형성이란 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미한다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록하여 구현하고 있다.
[참고 출처 : 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가지 유형 존재!
줄여서 Enum이라고 불리며 열거라는 의미를 갖는다. 즉, 순서가 있는 열거형 상수이다. Enum은 순서와 값을 가진다. (index, String name)
ex) 월화수목금토일
[참고 출처 : 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]
수업에서 배운 것은 아니지만 찾아보다가 발견하게 되어서 정리하게 되었다.
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/]