인터페이스
추상화 : 무조건 자식이 구현해야하는 수직적인 관계,
인터페이스 : 자식이 아니어도 누군가가 대신 구현해서 꽂아넣어 그것을 이용할 수 있는 수평적인 관계
다형성 : 인터페이스를 서로 다르게 구현한 구현체들을 필요할 때마다 꽂아(결합)넣을 수 있는 것.
어떤 구현체를 꽂아 넣느냐에 따라 출력이 달라지는 것.
*추상화를 하게 되면 자식클래스가 늘어나게 되고, 즉 클래스의 개체수가 점점 늘어나게 된다.
*하지만 인터페이스도 마찬가지로 구현체를 만들게되면 클래스의 개체수가 늘어나게 된다.
그럼에도 불구하고 인터페이스를 쓰는 이유는?
인터페이스의 구현체를 무조건 새로운 클래스에 구현할 필요 없다.
메인 프로그램의 inner class를 인터페이스의 구현체로써 생성이 가능하다(중첩 클래스,nested class) -> 새로운 클래스 생성 없이 구현 가능
extends 부모 상속(추상클래스 구현)
implements 인터페이스 상속
*다중 상속 가능.
extends는 한번만 가능, 인터페이스는 여러개 상속 가능
*중첩클래스 : 클래스 안에 또 다른 클래스를 선언한 것.
바깥의 클래스 : outer class
안의 클래스 : inner class
무조건 outer클래스 생성 후 inner클래스 생성 가능
생성 방법
NewlecExam exam = new NewlecExam();
NewlecExam.AAA listener = exam.new AAA();
-다중 상속 시 메서드 이름이 충돌할 수 있어 중첩클래스를 사용하는 경우도 있을 수 있으나 다른 경우도 있을 수 있다.
*함수 안에도 클래스를 생성 가능.
인터페이스를 구현한 구현체를 1회용으로만 사용할 수 있는 방법이 있다.
-> 10주 5회 수업때 이어서 진행
참고자료 :