18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍 - 인터페이스와 추상클래스 Lecturer Kim Myoung-Ho Nickname 블스 blogstudy@naver.com
18-1. 인터페이스와 다중상속 Java는 다중상속이 불가 합니다. 예전의 C++에서는 다중상속이 가능하였으나, java에서는 다중상속이 불가능 합니다. 이유는 C++에서 다중상속을 가능하게 하여 좋은 점도 있었으나, 다중상속으로 인한 문제점도 많아서 C++에서 발전된 java 에서는 다중상속을 막았습니다. 하지만 java에서도 interface를 통해 여러 가지 타입으로 객체를 선언할 수 있습니다. 몇몇 사람들은 이것을 가지고 java에서도 다중상속이 존재한다고 합니다. 그러나, 정확하게 말하면 java는 다중상속이 아닌 ‘다형성’이 존재한다고 이해하셔야 합니다. 다른 말로는 ‘다중구현’ 이라고 합니다. public class ChildClass extends ParentClass1 { } public class ChildClass extends ParentClass1, ParentClass2, ParentClass3 { } 단일 상속(O) 다중 상속(X) public class ChildClass implements iFunction1, iFunction2, iFunction3 { } 다중 구현(O)
18-2. 인터페이스를 통한 로봇 장난감 만들기 프로그래밍 마트에 장난감 코너에 가보면 로봇 장난감이 많습니다. 장난감에는 해당 장난감을 가지고 놀 수 있는 어린아이의 연령대가 표시되어 있습니다. 예를 들어 미사일이 나가는 로봇은 위험성이 존재하여 4세 이상의 어린이만 구매 가능하고, 곰돌이 로봇의 경우에는 귀엽고, 위험성이 없어 0세 이상의 모든 어린아이들이 가지고 놀 수 있습니다. 이러한 상황을 java 프로그램으로 구현해 보도록 하겠습니다. (18_2_ex1_toy) 미사일 발사 불빛 발사 팔다리 움직임 곰돌이 X O 마징가 비행기
18-3. 인터페이스와 추상클래스 공통점 추상메소드를 가지고 있습니다. – 추상메소드를 가지고 있어 하위 클래스에서 구현해야 합니다. 데이터 타입이 목적 입니다. – 객체생성이 목적이 아닌 데이터 타입을 정의하는 것이 목적입니다. 객체 생성은 ‘anonymose’를 이용해야 합니다. 차이점 상속, 구현 – 추상메소드는 상속을 통한 사용이고, 인터페이스는 구현을 통한 사용 입니다. 구성요소 차이 – 추상클래스는 일반 클래스와 동일하게 변수, 메소드의 모든 기능을 사용할 수 있지만, 인터페이스는 상수와 추상메소드만이 존재 합니다. 단일상속, 다중구현 – 추상클래스는 상속이므로 단일 상속만 지원하고, 인터페이스는 다중구현이 가능 합니다.