본문 바로가기

bitcamp/JAVA

interface와 추상클래스

 

1. interface 에 대하여 설명하시오. ·

· "자식calss가 구현하라" 라는 의미로 추상메소드를 가지고 있는 것이 intreface이며, 대표적인 표준/규약(강제)이다.

  (calss가 인터페이스의 메소드들을 구현하지 않는다면 컴파일이 실행되지 않기 때문에 강제성을 띈다)

· java 언어는 단일상속만 가능하지만 interface는 다중구현이 가능하며, 원칙적으로 구현부분이 없는 함수는 

 abstract public를 표기해야 하지만, 컴파일러가 자동으로 삽입하기 때문에 생략이 가능하다.

· ex)

 

· interface는 다형성이 적용되며 오버라이딩도 가능하고, 키워드는 interface(추상) - implements(구현) 형태로 사용한다.

· 자식class는 추상메소드를 단 한개라도 구현하지 않으면 실행이 되지 않으며, 다중구현과 단일상속이 동시에 가능하다.

  (단, 추상메소드에 default 키워드가 표기 된 경우에는 자식이 구현하지 않아도 된다.)

★interface에 올 수 있는 두가지는?

· 상수와 추상메소드만 접근 가능하다.

 

2. interface와 class의 차이는?

· interface(=추상메소드)는 구현부분 혹은 바디가 존재하지 않기 때문에 함수 선언이 불가하며,

 class는 구현부분이 존재하므로 함수 선언이 가능하다.

 따라서 interface는 함수와는 다르게 구현부분이 존재하지 않아 객체 생성도 불가하다. (단, 참조 변수 선언은 가능)

· ex) Printable p = new Printable();   객체 생성 불가,  Printable p; → 변수 선언 가능

 

3. abstract 키워드에 대하여 설명하시오.

· abstract 키워드는 메소드와 클래스 앞에 표기 가능하고, 추상메소드/추상클래스라 정의한다.

· abstract는 추상메소드를 이용하여 "자손 class가 구현하라" 라는 의미를 지닌다.

· 클래스 내에 추상메소드가 한 개라도 존재한다면 추상클래스라 정의하며, abstract class로 변경해야한다.

 (메소드와 마찬가지로 구현부분이 존재하지 않기 때문에 인스턴스 생성이 불가, 변수 선언은 가능하다.)

· ex)

 

4. 추상클래스와 인터페이스의 차이점

· 추상클래스는 ababstract 키워드를 표기해야 하지만, 인터페이스는 abstract public을 표기하지 않아도 컴파일러에 의해 자동 생성된다.

· abstract는 일반메소드와 추상메소드로 구성 가능하지만, interface는 추상메소드만으로 구성된다.

· 추상클래스를 상속받을 때 extends 키워드를 사용하고 단일 상속되며, 인터페이스는 implements 키워드를 사용하고 다중 구현이 가능하다.

 

 

5. Marker interface란?

· Marker는 interface의 한 종류로 클래스에 특정 표시를 해두기 위한 목적으로 사용된다.

· 즉, 클래스를 마킹하여 종류를 분류해주는 역할을 하며 Lower{}, Upper{} 등과 같은 방식으로 사용한다.

 

 

'bitcamp > JAVA' 카테고리의 다른 글

예외처리  (0) 2021.01.21
interface와 추상클래스_연습문제  (0) 2021.01.20
클래스의 상속과 오버라이딩_연습문제  (0) 2021.01.17
클래스의 상속과 오버라이딩  (0) 2021.01.17
배열_연습문제  (0) 2021.01.17