Java

Java 인터페이스 정의 인터페이스를 이용한 실습 예제_1

최종군 2024. 6. 27. 18:36

 

 

추상 메소드만 담고 있는 

 

: 인터페이스 

 

 

역할 : 극단적으로 동일한 목적 하에 

동일한 기능을 수행하게끔 강제하는 것

 

자바의 다형성을 극대화하여 개발 코드 수정을 줄이고 

프로그램 유지보수성을 높이기 위해 인터페이스를 사용

 

 

 

 

추상메소드는 몸체를 갖지 않는다

따라서 인스턴스 생성이 불가능하지만

 

객체로 생성은 불가능하다 

참조변수 선언 가능

 

 

interface는 상수 변수추상 메소드를 갖는다.

 

 

 

interface 인터페이스명{

 

// 상수멤버로 포함할 수 있음 

 

public static final 자료형 변수명 = 초기값;

 

추상 메소드만 선언이 가능하다 : 

[public abstract] 반환자료형 메소드명(자료형 매개변수) ;

// 생략이 되기 때문에 오버라이딩 시 반드시 public으로 표기 해야된다.

 

}

 

 

인터페이스 특징 : 

 

1. 모든 인터페이스의 메소드는 묵시적으로 public 이고 abstract

2. 변수는 묵시적으로 public static final

3. 객체 생성은 안되나 참조형 변수로는 가능하다

 

장점 : 

 

상위 타입 역할로 다형성을 지원하여 연결한다

해당 객체가 다양한 기능 제공 시에도 인터페이스에 해당하는 기능만을 사용하게 

제한 가능하다 

공동 기능상의 일관성 제공

공동 작업을 위한 인터페이스 제공

 


 

추상 클래스 : 

 

public abstract class House { // 추상 클래스

 

public abstract void methodTwo(); // 추상 메소드

 

 

하나 이상추상 메소드를 지니는 클래스를 가리켜 추상 클래스라 한다.

그리고 추상 클래스를 대상으로는 인스턴스 생성이 불가능하다.

물론 참조변수 선언은 가능하다.

 

추상 클래스(abstract class)

몸체 없는 메소드를 포함한 클래스 // 추상 메소드 

추상 클래스일 경우 클래스 선언부에 abstract 키워드 사용

[접근제한자] abstract class 클래스명 {}

 

미완성 클래스(abstract 키워드 사용)

자체적으로 객체 생성 불가능하다 - > 반드시 상속하여 객체 생성 

 

abstract 메소드가 포함된 클래스는 반드시 abstract 클래스

abstract 메소드가 없어도 abstract 클래스 선언 가능

 

클래스 내에 일반 변수, 메소드 포함 가능

 

객체 생성은 안되지만 참조형 변수 타입으로는 사용 가능

 

추상 클래스 장점 : 

일관된 인터페이스 제공 

꼭 필요한 기능 강제화(공통적이나 자식클래스에서 특수화된 기능)

 

---------------------------------------------------------------

 

 

 

 


 

 

 

상수 : 인터페이스에서 값을 정해줄테니 함부로 바꾸지 말고 제공해주는 값만 참조해라 (절대적)

추상메소드 : 가이드만 줄테니 추상메소드를 오버라이팅해서 재구현해라. (강제적)

디폴트메소드 : 인터페이스에서 기본적으로 제공해주지만, 맘에 안들면 각자 구현해서 써라. (선택적)

정적메소드 : 인터페이스에서 제공해주는 것으로 무조건 사용 (절대적)

 

 

 

 

                 


 

 

 

 

 

 

 

MVC 패턴에서 실선 화살표는 상속을 의미한다.

기울기가 있으면 abstract 메소드 - SmartPhone에 printInformation가 추상 메소드이다  

 

 

 

 

 

 

가장 상단 Phone : interface - 상수 변수 1개와

추상화 메소드인 makeCall 메소드와 takeCall 메소드를 가지고 있다

 

 

 

 

Camera interface 1개의 반환타입이 String인 picture 메소드를 가지고 있다

 

 

CellPhone interface는 기존 반환타입이 String를 가지는 charhe메소드를 가지고 있다 

 

interface가 가지는 추상 메소드는 모두 몸통 {}이 없는 매개변수 ()에 ; 으로 표기한다 

 

interface : Phone Camera을 상속 받은 CellPhone은 

1개의 상수 변수와 4개의 추상 메소드를 상속을 받는다. 

 

 

 

 

  

 

 

추상클래스(abstract) : SmartPhone

접근제어자 abstract  class 클래스명으로 표기 

 

SmartPhone 추상 클래스는 interface인  CellPhoneTouchDisplay를 

implements를 구현 받는다. 

 

SmartPhone abstract class는 총 6개의 메소드와 상수 변수 한 개와 private String 타입의 maker 변수를 

가지고 있다.

 

 

SmartPhone 추상 클래스의 상위 클래스인 TouchDisplay는 추상메소드인 Strong touch를 가지고 있다