on
JAVA_인터페이스(Interface)
JAVA_인터페이스(Interface)
인터페이스(Interface)
1. 인터페이스가 생긴이유
- 기본 클래스는 다중 상속을 지원하지 않아 문제 발생.
인터페이스를 통해 문제해결
2. 인터페이스
- 인터페이스는 상수, 추상메서드 가지고 있음.
- 인터페이스 메서드 추상메서드 형식으로 선언하면 abstract붙이지 않더라도 자동으로 컴파일 과정에서 붙게 됨.
- 클래스에서 인터페이스 구현할 때 클래스 이름 뒤에 implements키워드 사용.
- 추가적으로 static, default메서드 선언 또한 가능함.
▶ 인터페이스 기본문법
인터페이스
인터페이스를 구현하기위해 impletments한 후 인터페이스 내에있는 메소드 Overridig하지 않으면 오류발생.
오류해결방법 - 추상화, 메소드 오버라이딩 main문에서 interface사용
3. 인터페이스 기능1 - 다중상속이 가능
- 인터페이스는 다중상속 표현 가능.
- 여러 인터페이스 동시구현 가능.
- 단, 인터페이스에 있는 모든 추상 메서드 는 인터페이스 구현하는 클래스 내에 전부 오버라이딩 되어야함 .
- Inteface간에도 상속이 가능하다. Interface간 상속은 extends사용.
▶ 다중상속하는 인터페이스 예제1
인터페이스 2개 Inter1 & Inter2 2개의 interface기능 구현하는 Basic클래스
▲ 다중상속의 예 ▲
인터페이스기능 사용하는 MAIN클래스
4. 인터페이스 기능2 - 부모타입이 될 수 있고, 다형성 구현하는 원리
- 자바의 인터페이스는 객체의 사용방법을 정의한 타입(메서드 명세서)이다.
- 따라서 객체의 교환성 높여주기 때문에 다형성 구현하는 매우 중요한 역할함.
▶ 부모타입이고, 다형성을 구현하는 Interface예시
부모클래스와 인터페이스
추상클래스인 부모클래스 Animal, Fish와 Interface IPet을 상속받는
모든 클래스들은 부모클래스와 인터페이스에있는 메서드들을 재정의(Overriding)해야함.
public class MainClass{ public static void main(String[] args){ //생성자 Animal 부모타입에 저장됨. <- Animal의 기능만 실행됨. Animal dog = new Dog(); Animal cat = new Cat(); Animal tiger = new Tiger(); Animal[] ani = {dog, cat, tiger}; for(Animal a : ani){ a.eat(); } System.out.println("============================") //생성자 인터페이스 IPet타입에 저장됨 <- IPet의 기능만 실행됨. IPet dog2 = new Dog(); IPet cat2 = new Cat(); IPet fish2 = new GoldFish(); IPet[] pets = {dag2, cat2, fish2}; for(IPet p : pets){ p.play(); } } }
위 MainClass의 실행결과
5. 인터페이스 기능3 - 클래스 사용방법 정의한 규격화
- 인터페이스는 사용방법이 동일한 클래스를 만드는 기술이다.
▶ 프로그램에서 실제 사용되는 방법 예시(마이크로소프트에서 정의한 sw사용법)
사용방법을 규격화한 Printed인터페이스 하나의 인터페이스로 여러가지의 사용방법 정의하는 것 가능
위에서 LG와 Samsung클래스는 같은 인터페이스를 물려았음.
하지만 사용방법을 달리 정의하여 다른 결과값을 도출하게 함.
6. 인터페이스 정리
- 인터페이스는 상수와 추상메서드만 을 구성멤버로 가짐!
1. 인터페이스는기본적으로 다중상속 지원함.
2. 자바의 인터페이스는 객체의 사용방법을 정의한 타입이다. 이는 다형성을 구현하는 매우 중요한 역할을 함.
-->인터페이스도 데이터 타입(부모타입)이 될 수 있다.
3. 사용방법이 동일한 클래스를 만드는 기술.
- 인터페이스 구현 키워드 : Implements
- 인터페이스도 extends 키워드 사용해 인터페이스간 상속 구현가능.
from http://shinny.tistory.com/33 by ccl(A) rewrite - 2021-09-14 20:27:00