04/12 JAVA 다형성
다형성 (다양한 형식을 갖는)
- 절차의 일부분을 분리할 수 있다 -> 인터페이스가 필요하다
- 일부 절차의 분리와 도킹
저번시간 (8일)에
implements Banner했었는데
이렇게 하면 제대로 출력되지 않는다
왜??
ExamConsole 클래스에 print함수가 있는데 그것을 재정의 해버린 것
-> 배너 아래에 있는 것들이 재정의되어 없어져버린 것이다
클래스 안에 클래스를 새로 만들 수 있다
클래스를 새로 만들고 Banner클래스를 implements 하였다
클래스를 새로 만들었으니 XXX클래스 객체 새로 생성해야하는데
아래의 두가지 방법이 있다
메인함수에서 배너를 출력해줄 필요 없이 console 객체 생성하면 배너출력될 수 있도록
YBMExamConsole생성자에 옮겨주었다
내부 클래스에는 두개의 this가 있다
단순하게 인터페이스 구현하는 클래스를
아무 이름으로 쓰는 것도 문제 / 이름을 명명해주는 것도 문제.../ 멤버늘어나는 것도 문제
-> 클래스 명을 정하지 말자
-> 배너를 셋팅하기 위한 클래스를 굳이 생성하지 말고 -> 클래스 명을 거론하지 말자 -> setBanner해버려
-> 메서드 속 클래스 구현
저 함수를 호출할 때 한번만 생성되었다가 없어지는 친구이다
클래스를 이렇게도 정의할 수 있다
인터페이스는 약속된 함수를 정의하는 것이 중요하지 새로운 클래스를 만드는 것이 중요하지 않기 때문에
아무곳에서나 구현만 되면 된다 -> 중첩 클래스도 되고.. 함수속 클래스도 가능하고...
자 다시 정리
*
인터페이스 : 사물 또는 공간을 이어주는 접점
자바 인터페이스 : 객체와 객체를 이어주는 접점
인터페이스를 통해서 정의하고 구현하고 사용하는 절차가 접합이 되면? -> 다형성이 발생
일부 절차가 인터페이스로 정의된다?
A 클래스가 인터페이스를 정의하였다 (이게 무슨 이름인지는 알필요도 /관심도 없다)
인터페이스를 구현하는 방법 4가지를 배웠다
1. 외부클래스로 구현(implements)
2. 내부클래스로 구현
3. 메소드 내의 중첩 클래스로 구현
4. 익명 클래스로 구현
5. 람다식을 이용한 구현 -> 나중에 설명