자바의정석

[자바의 정석 - 기초편] ch7-35~37 인터페이스의 선언, 상속, 구현

유호야 2022. 3. 22. 19:27
반응형

ch7-35 인터페이스(interface)

- 추상 메서드의 집합
프로그래밍 관점에서의 인터페이스에 대한 개념이다. 

static 메서드, 상수 / 디폴트 메서드  = 부수적인 것 

- 구현된 것이 전혀 없는 설계도. 껍데기 (모든 멤버가 public)

변수에 메서드를 통해서 접근 하는 것 = 캡슐화 (iv를 보호하기 위함) 
> 직접 변수 접근 t.hour x / t.getHour() 

그 껍데기가 인터페이스의 껍데기 ( 모든 멤버가 public ) 

 

- 추상클래스와 인터페이스의 차이가 무엇인가? 

추상클래스는 일반 클래스이지만, 추상 메서드를 가지고 있는 것이라면 
인터페이스는 완전히 아무것도 없는 것 

생성자 iv 가 가장 큰 차이이다.
인터페이스는 인스턴스 변수를 가질 수 없지만,
추상클래스는 iv 를 가질 수 있다.

인터페이스는 추상메서드만 쭉 적어놓은 것이라 내용이 없는 것이다. 


추상 메서드의 집합이라는 것이 인터페이스의 핵심 개념이다. 

메서드의 껍데기 : 인터페이스 


선언 방법은 interface 인터페이스 이름 { 추상메서드 ...  }

인터페이슨 내에 변수 iv cv는 안돼지만, 상수는 선언 가능하다.
인터페이스 내의 모든 추상 메서드는 public이다.

인터페이스 내에서 메서드는 abstract를 생략할 수 있다. 항상 abstract public 이기 때문에 
상수도 항상 예외 없이 static public final 이다.
따라서 생략가능   


ch7-36 인터페이스 상속 

- 인터페이스의 조상은 인터페이스만 가능 (Objetc가 최고 조상이 아니다)

- 다중 상속이 가능 (추상 메서드는 충돌해도 문제 없음)

인터페이스는 추상메서드의 집합이다. 따라서 원래는 메서드 충돌 문제 중에서 어느 것을 상속받을지 알 수 없는 문제가 있었다. 선언부가 같지만 구현부가 다르문제가 있었다. 하지만 인터페이스는 구현부가 텅텅 비었기 때문에 충돌문제가 발생할 문제가 없다. 

자바는 단일 상속이지만, 인터페이스는 충돌 문제가 없기 때문에 다중 상속이 가능하다. 


ch7-37 인터페이스의 구현

- 인터페이스에 정의된 추상 메서드를 완성하는 것

인터페이스의 구현 (추상메서드를 작성)
: 추상클래스처럼 완성해서 사용해야 한다.

상속을 통해서 구현되지 않은 인터페이스를 완성해야 하는데 
클래스와 다르게 인터페이스는 implements 를 사용한다. 

추상메서드 구현 = 몸통 {} 완성

Fighter 클래스는 Fightable 인터페이스를 구현했다.  
추상 메서드의 몸통을 만들었기 때문에 abstract 가 없다. 

만약 인터페이스를 구현한 클래스 중에서 인터페이스의 일부를 구현하지 않은 경우 
abstract를 클래스 명 앞에 붙여줘야 한다.

인터페이스의 메서드 명 앞에 public abstract 가 생략 되어 있는 것 


Q. 인터페이스란?
추상 메서드의 집합 : 상수나 static 메서드, 디폴드 메서드가 (jdk 1.8 이후에 추가 되었지만, 핵심이 아니다)

Q. 인터페이스의 구현이란? implements
인터페이스의 추상메서드 몸통{} 만들기 (미완성 설계도 완성하기)

추상 클래스의 구현과 인터페이스 구현의 차이
완성된 설계도

 상속을 통해서 설계도를 완성한 것 


추상메서드를 완성하는 것 implements
추상클래스는 상속을 통해서 구현하고 extends 

둘 다 미완성 설계도를 완성하는 것 

Q. 추상 클래스와 인터페이스의 공통점
추상 메서드를 가지고 있다.

 
Q. 추상 클래스와 인터페이스의 차이점
인터페이스는 iv를 가질 수 없다.  

추상클래스는
일반적인 클래스와 같고, 추상 메서드를 가지고 있다는 점만
일반 클래스와 다르다.  

인터페이스는 빈 껍데기, 추상클래스(상수,static,default메서드만: 핵심이 아님)만 가지고 있다. 
iv, 생성자, 인스턴스 메서드 모두 안 됀다. 

구현된 것이 전혀 없고, 껍데기인 추상메서드만 가지고 있는 것 

 

반응형